Alterator/i18n: различия между версиями
Ilis (обсуждение | вклад) Нет описания правки |
|||
Строка 31: | Строка 31: | ||
Атрибут <tt>translate</tt> применяется к span и input типа reset и submit. Наличие атрибута означает, что содержимое данного span или value данного input надо перевести используя указанный словарь, "_" -- означает основной словарь. Для обратной совместимости с предыдущими модулями если у input атрибут translate отсутствует, то value всё-равно переводится и используется словарь по умолчанию. | Атрибут <tt>translate</tt> применяется к span и input типа reset и submit. Наличие атрибута означает, что содержимое данного span или value данного input надо перевести используя указанный словарь, "_" -- означает основной словарь. Для обратной совместимости с предыдущими модулями если у input атрибут translate отсутствует, то value всё-равно переводится и используется словарь по умолчанию. | ||
==== | ==== Бэкенды ==== | ||
Команды, приходящие к | Команды, приходящие к бэкенду, содержат информацию о языке используемом для переводов (параметр language). Перевод сообщений в бэкендах устроен по тому же принципу что и в описаниях интерфейсов: | ||
* основной словарь указывается явно или вычисляется как "alterator-< | * основной словарь указывается явно или вычисляется как "alterator-<бэкенд>". | ||
* есть функции для переводов, они или используют основной словарь или тот что указан в дополнительном параметре. | * есть функции для переводов, они или используют основной словарь или тот что указан в дополнительном параметре. | ||
===== | ===== Бэкенд на shell ===== | ||
<pre>po_domain="название словаря" | <pre>po_domain="название словаря" | ||
Строка 46: | Строка 46: | ||
Предпочтительно использовать обратные кавычки '`' вместо конструкции $() ибо последняя не подхватывается утилитой xgettext. | Предпочтительно использовать обратные кавычки '`' вместо конструкции $() ибо последняя не подхватывается утилитой xgettext. | ||
===== | ===== Бэкенд на perl ===== | ||
<pre>$TEXTDOMAIN = "название словаря" | <pre>$TEXTDOMAIN = "название словаря" |
Версия от 13:44, 21 октября 2008
Локализация
В alterator встроена система автоматического перевода текстовых сообщений на язык пользователя. Для того чтобы её задействовать необходимо отметить эти сообщения в описании интерфейса специальным образом и указать название используемого словаря.
Описание интерфейса
Если адрес описания интерфейса /<модуль>/foo/bar, то по умолчанию этому интерфейсу сопоставляется словарь alterator-<модуль> и соответственно имя его специально указывать не надо.
Вы можете явно указать другой словарь с помощью команды po-domain. Кроме того другой словарь можно задавать явно для каждого сообщения.
Пример для qt:
... (po-domain "основной словарь") ... (label text (_ "текст")) (label text (_ "текст" "дополнительный словарь")) ...
Инструкцией po-domain можно задать основной словарь, если он не должно вычисляться автоматически из адреса модуля. Функция _ используется для получения перевода, принимает необязательный второй параметр, указывающий словарь.
Пример для html:
<html po-domain="основной словарь" ... > ... <span translate="_">текст</span> <span translate="дополнительный словарь">текст</span> ... <input name="name" value="будет переведено" translate="_"/> </html>
Необязательным атрибутом po-domain можно задать основной словарь, если он не должно вычисляться автоматически.
Атрибут translate применяется к span и input типа reset и submit. Наличие атрибута означает, что содержимое данного span или value данного input надо перевести используя указанный словарь, "_" -- означает основной словарь. Для обратной совместимости с предыдущими модулями если у input атрибут translate отсутствует, то value всё-равно переводится и используется словарь по умолчанию.
Бэкенды
Команды, приходящие к бэкенду, содержат информацию о языке используемом для переводов (параметр language). Перевод сообщений в бэкендах устроен по тому же принципу что и в описаниях интерфейсов:
- основной словарь указывается явно или вычисляется как "alterator-<бэкенд>".
- есть функции для переводов, они или используют основной словарь или тот что указан в дополнительном параметре.
Бэкенд на shell
po_domain="название словаря" ... write_enum_item "aaa" "`_ "для перевода используется основной словарь"`" write_enum_item "bbb" "`_ "для перевода используется дополнительный словарь" "дополнительный словарь"`"
Переменная po_domain содержит имя основного словаря. Функция _ используется для получения перевода, принимает необязательный второй параметр, указывающий словарь. Предпочтительно использовать обратные кавычки '`' вместо конструкции $() ибо последняя не подхватывается утилитой xgettext.
Бэкенд на perl
$TEXTDOMAIN = "название словаря" ... write_string_param("aaa", _("text")); write_string_param("bbb", _("text", "дополнительный словарь"));
Единая база переводов
Для переводов стоит пользоваться единой базой переводов alterator-l10n. Данный пакет содержит переводы для всех модулей альтераторов. Тем самым достигается единый стиль названий (например перевод "Apply" и "Reset"). Чтобы подключить модуль к единой базе необходимо выполнить следующие действия:
- свяжитесь с мантейнером пакета alterator-l10n (inger@, slazav@, cas@) и сообщите URL репозитария в git.altlinux.org
- дождитесь когда ваш пакет будет включён в alterator-l10n
- добавьте пакет alterator-l10n в сборочные зависимости модуля (тег BuildPreReq)
После этого при каждой сборке пакета автоматически будут создаваться и размещаться в результирующем rpm-пакете) переводы для всех поддерживаемых языков. Если в вашем модуле уже были свои варианты переводов (каталог po), то их надо удалить вместе с pot-файлом.