mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-18 12:15:19 +00:00
add notes on i18n
Original commit message from CVS: add notes on i18n
This commit is contained in:
parent
74464f0730
commit
3f56b0cbcb
1 changed files with 40 additions and 0 deletions
40
docs/random/i18n
Normal file
40
docs/random/i18n
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
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
|
Loading…
Reference in a new issue