msgfmt(1) on Solnix vs Linux and the BSDs

The msgfmt on a default Solnix system's PATH is the illumos one at /usr/bin/msgfmt, not the GNU gettext msgfmt that pkgs.solnix.gettext publishes. The illumos msgfmt has only -D, -f, -g, -o, -s, -v and --strict, so GNU options such as -c, --check, --java, --xml or --statistics used on Linux or NetBSD are not documented for it.

What Solnix runs

The published Solnix page is GNU gettext-tools 0.22.5 from pkgs.solnix.gettext, but the command on PATH is the illumos /usr/bin/msgfmt, and no other illumos variants are shipped. The illumos page documents only -D/--directory, -f/--use-fuzzy, -g, -o, -s, --strict and -v/--verbose. The GNU msgfmt is the one whose options match the Linux and NetBSD pages. How to invoke it from the package is not described in the bundle.

Differences

Compared withTopicWhat differs
Linux, NetBSDimplementation on PATHThe Solnix default /usr/bin/msgfmt is the illumos program. Linux and NetBSD ship GNU gettext msgfmt, whose SYNOPSIS is 'msgfmt [OPTION] filename.po ...'. The Solnix GNU page matches them, but it is not what runs by default.
Source: Solnix header (command on PATH is illumos); Solnix illumos msgfmt(1) SYNOPSIS; Linux msgfmt(1) SYNOPSIS; NetBSD msgfmt(1) SYNOPSIS
Linux, NetBSD-c / --check and other checksThe illumos msgfmt documents no -c, --check, --check-format, --check-header, --check-domain, -C or --check-accelerators. Linux and NetBSD msgfmt document all of these. A Makefile that runs msgfmt -c fails on the illumos msgfmt, as far as its page shows.
Source: Solnix illumos msgfmt(1) SYNOPSIS and OPTIONS; Linux msgfmt(1) Input file interpretation; NetBSD msgfmt(1) Input file interpretation
Linux, NetBSD-v meaningOn illumos, -v lists duplicate message identifiers for Solaris catalogs. For GNU-compatible catalogs it diagnoses anomalies such as mismatched newlines or % format specifiers. On Linux and NetBSD, -v only means 'increase verbosity level'.
Source: Solnix illumos msgfmt(1) -v; Linux msgfmt(1) -v, --verbose; NetBSD msgfmt(1) -v, --verbose
Linux, NetBSD-g and -s catalog formatThe illumos msgfmt has -g, which writes a GNU-compatible catalog, and -s, which writes a Solaris message catalog. The two cannot be combined. Neither flag appears in the Linux or NetBSD pages. Those pages describe only the GNU binary catalog.
Source: Solnix illumos msgfmt(1) -g, -s; Linux msgfmt(1) OPTIONS; NetBSD msgfmt(1) OPTIONS
Linux, NetBSD--strict meaningOn illumos, --strict appends .mo to the output file name if it lacks that suffix, and is ignored for Solaris catalogs. On Linux and NetBSD, --strict means 'enable strict Uniforum mode'.
Source: Solnix illumos msgfmt(1) --strict; Linux msgfmt(1) --strict; NetBSD msgfmt(1) --strict
Linux, NetBSD-o and domain directivesOn illumos, -o sets the output file name and all domain directives and duplicate msgids in the .po file are ignored. Without -o, output goes to messages.mo or messages, or to domainname.mo or domainname, depending on the format or --strict. The Linux and NetBSD pages say only that -o writes to a file, and that - means standard output.
Source: Solnix illumos msgfmt(1) -o, USAGE; Linux msgfmt(1) -o; NetBSD msgfmt(1) -o
Linux, NetBSD-f / --use-fuzzyThe illumos -f is documented as ignored when Solaris message catalogs are processed. The Linux and NetBSD pages state no such exception.
Source: Solnix illumos msgfmt(1) -f; Linux msgfmt(1) -f; NetBSD msgfmt(1) -f
Linux, NetBSDoutput modes (Java, C#, Tcl, Qt)The illumos msgfmt documents none of the --java, --csharp, --tcl or --qt modes, or -P and --stringtable-input. Linux and NetBSD msgfmt document all of these.
Source: Solnix illumos msgfmt(1) SYNOPSIS; Linux msgfmt(1) Operation mode; NetBSD msgfmt(1) Operation mode
NetBSD--desktop and --xml modesThe Solnix GNU page (0.22.5) and the Linux page (gettext 1.0) document --desktop and --xml modes with --template, -L and -k. NetBSD 11.0 msgfmt (gettext 0.16.1) documents neither. Linux also has --replace-text, which the Solnix GNU page lacks.
Source: Solnix GNU msgfmt(1) Desktop Entry mode options, XML mode options; NetBSD msgfmt(1) Operation mode; Linux msgfmt(1) --replace-text
NetBSDGNU output detailsThe Solnix GNU page and the Linux page document --no-convert, --no-redundancy and --endianness. The NetBSD page documents only -a/--alignment and --no-hash under Output details.
Source: Solnix GNU msgfmt(1) Output details; Linux msgfmt(1) Output details; NetBSD msgfmt(1) Output details
Linux, NetBSDlong option for -oThe illumos SYNOPSIS gives --output-file=output-file, but its OPTIONS entry for -o spells the long form -−output=output-file. The Linux and NetBSD pages give --output-file=FILE.
Source: Solnix illumos msgfmt(1) SYNOPSIS and -o; Linux msgfmt(1) -o; NetBSD msgfmt(1) -o

Standards

  • POSIX: msgfmt is a POSIX.1-2024 utility.
  • Solnix: The illumos page text in the bundle is trimmed and shows no STANDARDS or ATTRIBUTES section.
  • Linux: The Linux page has no STANDARDS section. -C/--check-compatibility is described as checking that GNU msgfmt behaves like X/Open msgfmt.

Writing portable scripts

  • For scripts that must run on Solnix's default msgfmt, use only -D, -f, -o and -v with .po files, and avoid GNU-only options such as -c, --check and --statistics.
  • Pass -o explicitly. Without it, the illumos msgfmt picks the output file name from domain directives, messages or messages.mo, depending on -g, -s and --strict.

Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.