In order to display various localized text strings on a website, such as “Subscribe for news” or “Shopping cart”, it is convenient to use the design theme localization mechanism.
The operating principle of the design theme localization is similar to that of gettext, i.e. a basic version of a string is used as its identifier (it is usually specified in English), and translations for that string are specified for other available locales. If no translation is specified for some locale, then the string id is used for that locale instead of a translation.
Design theme localization strings and their translations must be specified in the
theme.xml manifest file in the form of a common
locales element containing several nested
locale elements corresponding to individual strings.
locale element must contain one child element
msgid with the string id and an arbitrary number of
msgstr elements, each for one available locale, for which a translation is required. Each
msgstr must have a
locale attribute containing the corresponding locale name. If no translation of a string is required for some locale, then no
msgstr element should be added for that string.
Below is shown an example of the
locales section for the
<locales> <locale> <msgid>Subscribe for news</msgid> <msgstr locale="ru_RU">Подписаться на новости</msgstr> </locale> <locale> <msgid>Shopping cart</msgid> <msgstr locale="ru_RU">Корзина</msgstr> </locale> </locales>
Use of localization strings in template files
Localized strings must be added to design theme templates using the
[`string`] syntax. Here is how you can use one of the strings declared in the example above:
<p>[`Subscribe for news`]</p>
If Russian locale (in this example) is specified or automatically detected for a website settlement utilizing such a design theme (
ru_RU), then the corresponding translation will be returned to a user's browser instead of
[`Subscribe for news`]:
<p>Подписаться на новости</p>
Otherwise the string's id will be returned:
<p>Subscribe for news</p>