gstreamer/docs/random/i18n

41 lines
1.6 KiB
Text
Raw Normal View History

Internationalization notes
--------------------------
- apps:
- use setlocale to parse locale env vars and set to language code
- use textdomain to set the text domain of their app
- use bindtextdomain to tie the domain to a locale dir
- use gettext (possibly disguised as _) to translate in the current domain
- libraries:
- should only use bindtextdomain to tie a domain to a locale dir
- use dgettext (possibly disguised as _) to translate from a set domain
- How to make your plug-in code translateable:
- include <gst/gst-i18n-plugin.h> in all files that mark strings for
translation, or do the bindtextdomain call
- in plugin_init, add a block like this:
#ifdef ENABLE_NLS
GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
LOCALEDIR);
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
#endif /* ENABLE_NLS */
- mark all strings you want translated for translation by wrapping them in
_()
- typically, these are all strings that serve as the message string for a
GST_ELEMENT_ERROR or _WARNING
- but it could also consist of any strings that may end up being presented
to the user (for example mixer track)
Things to watch out for
-----------------------
- forgetting to bindtextdomain is an error that is not always noticeable,
because:
- any plugin from the same module being init'd binds the text domain,
so you may forget it in B, and still have it work because A bound the
domain
- without a bindtextdomain call, any domain is bound to the system locale
dir - so you could still have translations if it happens to be where the
translations are