For RKWard's XML files, i18n will mostly just work. If you are writing your own .pluginmap (e.g. for an external plugin),
you will have to specify a po_id
next to the pluginmap's id
. This defines the "message catalog" to use. In general this should
be set identical to the id
of your .pluginmap, but if you provide several related .pluginmaps in a single package, you will
probably want to specify a common po_id
in your maps. The po_id
of a .pluginmap file is inherited by all plugins
declared in it, unless that declares a different po_id
.
For plugins and help pages, you do not need to tell RKWard which strings are to be translated, because that is generally evident from their usage. However, as explained above,
you should keep an eye out for strings that may be ambiguous or need some explaining in order to be translated, correctly. For strings that could have different meanings, provide
an i18n_context
like this:
<checkbox id="scale" label="Scale" i18n_context="Show the scale"/> <checkbox id="scale" label="Scale" i18n_context="Scale the plot"/>
Providing i18n_context
will cause the two strings to be translated separately. Otherwise they would share a single translation. In addition, the context
is shown to the translator. The i18n_context
-attribute is supported on all elements that can have translatable strings, somewhere, including elements that
contain text inside them (e.g. <text>-elements).
In other cases the string to translate has a single non-ambiguous meaning, but may still need some explaining. In this case you can add a comment that will be shown to translators. Examples might include:
<!-- i18n: No, this is not a typo for screen plot! --> <component id="scree_plot" label="Scree plot"/> <!-- i18n: If you can, please make this string short. Having more than some 15 chars looks really ugly at this point, and the meaning should be mostly self-evident to the user (selection from a list of values shown next to this element) --> <valueslot id="selected" label="Pick one"/>
Note that such comments must precede the element they apply to, and must start with either "i18n:" or "TRANSLATORS:".
Finally, in rare cases, you may want to exclude certain strings from translation. This may make sense, for example, if you offer a choice between several R function names in a <radio>-control. You do not want these to be translated, then (but depending on the context, you should consider giving a descriptive label, instead):
<radio id="transformation" label="R function to apply"> <option id="as.list" noi18n_label="as.list()"/> <option id="as.vector" noi18n_label="as.vector()"/> [...] </radio>
Note that you will omit the label
-attribute, then, and specify noi18n_label
, instead. Also, note that in contrast to
i18n_context
and comments, using noi18n_label
will make your plugin incompatible with versions of RKWard prior to 0.6.3.