Hi, everybody!

I'm glad to announce release 0.2.0 of gettext-tiny.

This release is a milestone in the gettext-tiny development, as it adds a full-fledged msgfmt tool, which is finally capable to produce real translations, supporting all necessary (in real-world use) features of the GNU implementation, such as plural forms, fuzzy marks.

What is especially important for musl users is that it supports SYSDEP replacements.

The latter is a relatively recent addition to GNU gettext to deal with system-dependent format strings[0]. It is problematic in that GNU does the expansion at run-time, thereby requiring read/write memory for something that should be (and was in the past) entirely read-only and could be shared among processes, and so defeating the entire purpose of the precompiled translations.

This is why musl's libintl implementation opts out of this feature and requires the msgfmt tool to expand the SYSDEP strings into all possible variations, so there's no need for dynamic memory allocation to support it.

gettext-tiny now has the first implementation of msgfmt which is compatible to musl's requirement, this means that for the first time it will be possible for musl users to enjoy their software with working translations, without the need to use an external libintl implementation for that.

Note that msgmerge and xgettext are still stubs, but they are sufficient to build about 1000 packages from sabotage linux[1] without any issues, as well as all packages
in no-name linux[2].

I personally was using it daily, fixing bugs and coding new functionality for months, and believe it is ready for prime-time now.

fetch your source tarball at :
http://ftp.barfooze.de/pub/sabotage/tarballs/gettext-tiny-0.2.0.tar.xz

$ sha512sum gettext-tiny-0.2.0.tar.xz 
4d8d9d02042adf023bfd2502fa7598f9b16ef2e03dd3d39fd3ba36f1be1d884d1b891600d9263e11948e3979909ea810a1d1b8cefc7e522feda8b422a1107a2e  gettext-tiny-0.2.0.tar.xz

git repo @ https://github.com/sabotage-linux/gettext-tiny


Note that during the last months I also found some bugs in musl's libintl, and they have been fixed in upstream. So, with new gettext-tiny and those patches, I now have a system with full translation support. I can assure you that both gettext-tiny and musl's gettext are completely usable. Enjoy your translations from now!

These are the patches for musl, if you can't wait for 1.1.17:
https://git.musl-libc.org/cgit/musl/commit/?id=01e6bbece2bdcac243cdb8dff6916f2bb80a19e1
https://git.musl-libc.org/cgit/musl/commit/?id=dbbb3734d8c0176feabd6c46e2e85bbc3b8a60af
https://git.musl-libc.org/cgit/musl/commit/?id=16319a5df9d50cfc642ffc8db76bc36562d4b3dd
https://git.musl-libc.org/cgit/musl/commit/?id=e4fc9ad780e36c84e1ed6b0fc01b3c53ae65ff9d
https://git.musl-libc.org/cgit/musl/commit/?id=e6917eced2cc841fe3dfd9c04deec9202f9e34f3
https://git.musl-libc.org/cgit/musl/commit/?id=d6601f0af0452b218d247cb47513fc9cd6bbf2e2


Best regards,
xhe


References:
[0] - http://www.openwall.com/lists/musl/2015/04/16/1
[1] - https://github.com/sabotage-linux/sabotage
[2] - https://github.com/xhebox/noname-linux