MSGUNFMT(1)

πŸ’… MSGUNFMT β€” the uncompile-your-catalog glow-up ✨

okay bestie, gather round, because msgunfmt is one of those little commands that's lowkey iconic once you know what it does. it lives in the GNU gettext-tools fam, and it does exactly one job, but it does it beautifully.


🌸 NAME 🌸

msgunfmt β€” uncompile message catalog from binary format πŸ’–


πŸŽ€ SYNOPSIS πŸŽ€

msgunfmt [OPTION] [FILE]...

✨ DESCRIPTION ✨

So here's the vibe: msgunfmt takes a binary message catalog and converts it back into a Uniforum style .po file. it's the un-baking of the cake, the un-scrambling of the egg, the reverse glow-up of a .mo file back into readable text. no cap. πŸ”₯

heads up bestie: mandatory arguments to long options are mandatory for short options too. so like, if an option needs a value, it needs a value either way. periodt.

πŸ¦‹ Operation mode πŸ¦‹

Pick your fighter β€” what kind of file are we even reading here?

  • -j, --java β€” Java mode, bestie: the input is a Java ResourceBundle class β˜•
  • --csharp β€” C# mode: the input is a .NET .dll file πŸ’ 
  • --csharp-resources β€” C# resources mode: the input is a .NET .resources file πŸ—‚οΈ
  • --tcl β€” Tcl mode: the input is a tcl/msgcat .msg file 🐚

πŸ“ Input file location πŸ“

  • FILE ... β€” the input .mo files, bestie

if no input file is given, or if it's literally -, then standard input is read. classic. πŸ™ˆ


🌈 Input file location in Java mode 🌈

  • -r, --resource=RESOURCE β€” resource name
  • -l, --locale=LOCALE β€” locale name, either language or language_COUNTRY

okay so the class name gets determined by appending the locale name to the resource name, separated with an underscore. and the class is located using the CLASSPATH. iykyk ✨


πŸ’œ Input file location in C# mode πŸ’œ

  • -r, --resource=RESOURCE β€” resource name
  • -l, --locale=LOCALE β€” locale name, either language or language_COUNTRY
  • -d DIRECTORY β€” base directory for locale dependent .dll files
⚠️ bestie listen: the -l and -d options are mandatory here. no negotiating.

the .dll file is located in a subdirectory of the specified directory, and that subdirectory's name depends on the locale. cute, right? πŸ’…


🧚 Input file location in Tcl mode 🧚

  • -l, --locale=LOCALE β€” locale name, either language or language_COUNTRY
  • -d DIRECTORY β€” base directory of .msg message catalogs
⚠️ same energy as above: the -l and -d options are mandatory.

the .msg file is located in the specified directory. simple, clean, iconic. 🫢


πŸ‘‘ Output file location πŸ‘‘

  • -o, --output-file=FILE β€” write output to specified file

and if no output file is specified, or if it's -, the results go to standard output. the default is always the chill option. 😌


⭐ Output details ⭐

this is where it gets customizable, bestie. buckle up.

  • --color β€” use colors and other text attributes always
  • --color=WHEN β€” use colors and other text attributes if WHEN. WHEN may be 'always', 'never', 'auto', or 'html'. 🎨
  • --style=STYLEFILE β€” specify a CSS style rule file for --color
  • -e, --no-escape β€” do not use C escapes in output (default)
  • -E, --escape β€” use C escapes in output, no extended chars
  • --force-po β€” write a PO file even if it's empty πŸ’ͺ
  • -i, --indent β€” write indented output style
  • --strict β€” write strict uniforum style
  • -p, --properties-output β€” write out a Java .properties file
  • --stringtable-output β€” write out a NeXTstep/GNUstep .strings file
  • -w, --width=NUMBER β€” set output page width
  • --no-wrap β€” do not break long message lines (the ones longer than the output page width) into several lines
  • -s, --sort-output β€” generate sorted output

πŸ’– Informative output πŸ’–

  • -h, --help β€” display this help and exit
  • -V, --version β€” output version information and exit
  • -v, --verbose β€” increase verbosity level

🌟 AUTHOR 🌟

Written by Ulrich Drepper and Bruno Haible. absolute legends, honestly. πŸ‘‘


😭 REPORTING BUGS 😭

found a bug? do NOT suffer in silence bestie, report it in the bug tracker at <https://savannah.gnu.org/projects/gettext> or by email to <bug-gettext@gnu.org>. they wanna hear from you fr fr. πŸ“¬


Copyright Β© 1995-2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. πŸ’€ (yes, really, no warranty, read it and weep)

🌈 SEE ALSO 🌈

The full documentation for msgunfmt is maintained as a Texinfo manual. If the info and msgunfmt programs are properly installed at your site, the command

info msgunfmt

should give you access to the complete manual. go read it, it's giving encyclopedia but make it cute. πŸ“šβœ¨


and that's the whole page, bestie!! πŸ’– this was GNU gettext-tools 1.0, dated January 2026 β€” slay, stay safe, and always uncompile responsibly. πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from