After 30 years of development: GNU gettext 1.0 is ready
GNU gettext version 1.0 is here. The internationalization framework now supports local LLMs for machine translations.
(Image: heise medien)
The internationalization framework GNU gettext has reached a milestone with version 1.0. The release follows version 0.26 from July 2025 and marks a turning point after more than three decades of development work for the widely used localization tool.
Sun Microsystems began developing gettext in the early 1990s. In 1995, Ulrich Drepper developed a standalone implementation for the GNU project based on Sun's concept. Since then, the framework has established itself as the standard for multilingual integration in open-source software. Projects like KDE, LibreOffice, Godot Engine, and Weblate manage their translations with gettext.
New Tools for Machine Translation
The most important innovation in version 1.0 is the integration of Large Language Models (LLMs) for machine pre-translation. With the two new programs msgpre and spit, developers can use local LLMs to automatically translate PO files. While msgpre processes complete PO files, spit applies machine translation to individual messages.
However, maintainers Bruno Haible and Daiki Ueno explicitly point out in the documentation that users must check the licensing of the LLMs used. The models should be GPL-compatible and usable in the spirit of free software. Local installation keeps control over the texts to be translated and the data with the user.
Videos by heise
Improved Workflows for Maintainers
In addition to LLM integration, gettext 1.0 brings improvements in handling PO files. The new program po-fetch automatically downloads translated PO files from translation project websites. This simplifies the synchronization workflow, as maintainers no longer have to manually search for updated translations.
The parsers for PO files have become more robust and now handle special cases such as line breaks in msgstr, plural forms, and header entries more reliably. There is extended support for the programming languages Rust and OCaml. Details can be found in the announcement of version 1.0.
30 Years of Conservative Development
The reason gettext remained in the 0.x status for so long is due to the conservative development philosophy of the GNU project. The framework is based on the Uniforum standard from 1988; GNU chose a message-as-key approach due to its greater simplicity. Over the years, API stability has been prioritized, as is typical for critical infrastructure software.
The new features in version 1.0 are optional and do not affect backward compatibility. Existing workflows with xgettext, msgmerge, and msgfmt will continue to work unchanged. Important for maintainers: PO files will now remain unchanged as submitted by translators, instead of being automatically synchronized with the POT file – this avoids merge conflicts and reduces commits. Linux distributions can update to the new version without problems, as the core functionality remains stable.
The source code for gettext 1.0 is available for download on the GNU FTP servers. The LLM tools require a local installation of a compatible language model.
(fo)