First of all I think gettext
is one of the best at this point.
You may take a look on Boost.Locale
that may provide a better API and use gettext
's dictionary model: http://cppcms.sourceforge.net/boost_locale/docs/ (not official part of Boost, still beta).
Edit:
If you don't like gettext
...
These are translation technologies:
- OASIS XLIFF
- GNU gettext po/mo files
- POSIX catalogs
- Qt ts/tm files
- Java properties,
- Windows resources.
Now:
- Last two total crap... Very hard to use translate and maintain, do not support plural forms.
- Qt ts/tm -- requires usage of Qt framework. Have very similar model to
gettext
. Not bad solution, but limited to Qt. Not so useful in generic programs.
- POSIX catalogs -- nobody uses them, no plural forms support. Crap.
- OASIX XLIFF -- "standard" solution, depends on XML, even ICU requires compilation to specific ICU resources for use. Limited translation tools, I don't know any library that supports XLIFF. Plural forms not so easy to use (ICU included some support only in 4.x release).
Now what do we have?
GNU gettext
, widely used, has great tools, has great plural forms support, very popular in translators community...
So decide, do you really think that gettext is not so good solution?
I don't think so. You haven't worked with other solutions at all, so try to understand how it works at first place.