Alterator/i18n
Материал из ALT Linux Wiki
(Import from freesource.info) |
|||
(21 промежуточная версия не показана) | |||
Строка 1: | Строка 1: | ||
- | + | <onlyinclude> | |
- | + | ||
- | === | + | === Интернационализация === |
- | + | [[ruwp:Интернационализация|Интернационализация]] (i18n) — процесс подготовки приложения для работы с разноязычными пользователями. Традиционно приложение пишется на английском языке, а затем готовится словарь для перевода строк на английском языке на родной язык пользователя. | |
+ | |||
+ | За интернационализацией приложения следует его [[Alterator/l10n|локализация]]. Интернационализацию выполняет разработчик модуля при помощи команды {{cmd|make update-po}}, а локализацию — переводчик. | ||
+ | |||
+ | Хорошим тоном считается автоматически создаваемый словарь. Для этого строковые ресурсы в приложении подлежащие переводу оформляются особым образом. Подобное оформление зависит от используемого языка программирования. | ||
==== Описание интерфейса ==== | ==== Описание интерфейса ==== | ||
Если адрес описания интерфейса ''/<модуль>/foo/bar'', то по умолчанию этому интерфейсу сопоставляется словарь ''alterator-<модуль>'' и соответственно имя его специально указывать не надо. | Если адрес описания интерфейса ''/<модуль>/foo/bar'', то по умолчанию этому интерфейсу сопоставляется словарь ''alterator-<модуль>'' и соответственно имя его специально указывать не надо. | ||
- | Вы можете явно указать другой словарь с помощью команды po-domain. Кроме того другой словарь можно задавать явно для каждого сообщения. | + | Вы можете явно указать другой словарь с помощью команды po-domain. Кроме того другой словарь можно задавать явно для каждого сообщения. |
Пример для qt: | Пример для qt: | ||
- | < | + | <source lang="lisp">... |
(po-domain "основной словарь") | (po-domain "основной словарь") | ||
... | ... | ||
(label text (_ "текст")) | (label text (_ "текст")) | ||
(label text (_ "текст" "дополнительный словарь")) | (label text (_ "текст" "дополнительный словарь")) | ||
- | ...</ | + | ... |
- | Инструкцией <tt>po-domain</tt> можно задать основной словарь, если он не | + | </source> |
+ | Инструкцией <tt>po-domain</tt> можно задать основной словарь, если он не должен вычисляться автоматически из адреса модуля. | ||
Функция <tt>_</tt> используется для получения перевода, принимает необязательный второй параметр, указывающий словарь. | Функция <tt>_</tt> используется для получения перевода, принимает необязательный второй параметр, указывающий словарь. | ||
Пример для html: | Пример для html: | ||
- | < | + | <source lang="html4strict"> |
+ | <html po-domain="основной словарь" ... > | ||
... | ... | ||
<span translate="_">текст</span> | <span translate="_">текст</span> | ||
Строка 27: | Строка 32: | ||
... | ... | ||
<input name="name" value="будет переведено" translate="_"/> | <input name="name" value="будет переведено" translate="_"/> | ||
- | </html></ | + | </html> |
- | Необязательным атрибутом <tt>po-domain</tt> можно задать основной словарь, если он не | + | </source> |
+ | Необязательным атрибутом <tt>po-domain</tt> можно задать основной словарь, если он не должен вычисляться автоматически. | ||
- | Атрибут <tt>translate</tt> | + | Атрибут <tt>translate</tt> применяется к span и input типа reset и submit. Наличие атрибута означает, что содержимое данного span или value данного input надо перевести используя указанный словарь, «_» — означает основной словарь. Для обратной совместимости с предыдущими модулями если у input атрибут translate отсутствует, то value всё-равно переводится и используется словарь по умолчанию. |
- | ==== | + | ==== Бэкенды ==== |
- | + | Команды, приходящие к бэкенду, содержат информацию о языке используемом для переводов (параметр language). Перевод сообщений в бэкендах устроен по тому же принципу что и в описаниях интерфейсов: | |
- | Команды, приходящие к | + | * основной словарь указывается явно или вычисляется как «alterator-<бэкенд>». |
- | * основной словарь указывается явно или вычисляется как | + | |
* есть функции для переводов, они или используют основной словарь или тот что указан в дополнительном параметре. | * есть функции для переводов, они или используют основной словарь или тот что указан в дополнительном параметре. | ||
- | ===== | + | ===== Бэкенд на shell ===== |
- | + | <source lang="bash"> | |
- | < | + | po_domain="название словаря" |
... | ... | ||
write_enum_item "aaa" "`_ "для перевода используется основной словарь"`" | write_enum_item "aaa" "`_ "для перевода используется основной словарь"`" | ||
- | write_enum_item "bbb" "`_ "для перевода используется дополнительный словарь" "дополнительный словарь"`"</ | + | write_enum_item "bbb" "`_ "для перевода используется дополнительный словарь" "дополнительный словарь"`" |
+ | </source> | ||
Переменная <tt>po_domain</tt> содержит имя основного словаря. Функция <tt>_</tt> используется для получения перевода, принимает необязательный второй параметр, указывающий словарь. | Переменная <tt>po_domain</tt> содержит имя основного словаря. Функция <tt>_</tt> используется для получения перевода, принимает необязательный второй параметр, указывающий словарь. | ||
Предпочтительно использовать обратные кавычки '`' вместо конструкции $() ибо последняя не подхватывается утилитой xgettext. | Предпочтительно использовать обратные кавычки '`' вместо конструкции $() ибо последняя не подхватывается утилитой xgettext. | ||
- | ===== | + | ===== Бэкенд на perl ===== |
- | + | <source lang="perl"> | |
- | < | + | $TEXTDOMAIN = "название словаря" |
... | ... | ||
write_string_param("aaa", _("text")); | write_string_param("aaa", _("text")); | ||
- | write_string_param("bbb", _("text", "дополнительный словарь"));</ | + | write_string_param("bbb", _("text", "дополнительный словарь")); |
+ | </source> | ||
- | ==== | + | ==== Desktop-файлы ==== |
+ | Из desktop-файлов для перевода берутся поля Name и Comment… | ||
- | + | {{Category navigation|title=Alterator|category=Alterator|sortkey={{SUBPAGENAME}}}} | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + |
Текущая версия на 17:21, 20 июля 2015
Содержание |
Интернационализация
Интернационализация (i18n) — процесс подготовки приложения для работы с разноязычными пользователями. Традиционно приложение пишется на английском языке, а затем готовится словарь для перевода строк на английском языке на родной язык пользователя.
За интернационализацией приложения следует его локализация. Интернационализацию выполняет разработчик модуля при помощи команды make update-po, а локализацию — переводчик.
Хорошим тоном считается автоматически создаваемый словарь. Для этого строковые ресурсы в приложении подлежащие переводу оформляются особым образом. Подобное оформление зависит от используемого языка программирования.
Описание интерфейса
Если адрес описания интерфейса /<модуль>/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", "дополнительный словарь"));
Desktop-файлы
Из desktop-файлов для перевода берутся поля Name и Comment…