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.
The manual pages
- Solnix: msgfmt(1) from
pkgs.solnix.gettext - Linux: msgfmt(1) gettext-1.0
- NetBSD: msgfmt(1) 11.0
- Standard: POSIX.1-2024 (IEEE Std 1003.1-2024),
msgfmt
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 with | Topic | What differs |
|---|---|---|
| Linux, NetBSD | implementation on PATH | The 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 checks | The 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 meaning | On 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 format | The 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 meaning | On 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 directives | On 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-fuzzy | The 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, NetBSD | output 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 modes | The 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 |
| NetBSD | GNU output details | The 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, NetBSD | long option for -o | The 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-compatibilityis 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,-oand-vwith .po files, and avoid GNU-only options such as-c,--checkand--statistics. - Pass
-oexplicitly. Without it, the illumos msgfmt picks the output file name from domain directives, messages or messages.mo, depending on-g,-sand--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.