Alterator/i18n

Материал из ALT Linux Wiki

< Alterator(Различия между версиями)
Перейти к: навигация, поиск
(Единая база переводов)
 
(11 промежуточных версий не показаны.)
Строка 1: Строка 1:
<onlyinclude>
<onlyinclude>
-
=== Локализация ===
+
 
-
В alterator встроена система автоматического перевода текстовых сообщений на язык пользователя. Для того чтобы её задействовать необходимо отметить эти сообщения в описании интерфейса специальным образом и указать название используемого словаря.
+
=== Интернационализация ===
 +
[[ruwp:Интернационализация|Интернационализация]] (i18n) — процесс подготовки приложения для работы с разноязычными пользователями. Традиционно приложение пишется на английском языке, а затем готовится словарь для перевода строк на английском языке на родной язык пользователя.
 +
 
 +
За интернационализацией приложения следует его [[Alterator/l10n|локализация]]. Интернационализацию выполняет разработчик модуля при помощи команды {{cmd|make update-po}}, а локализацию — переводчик.
 +
 
 +
Хорошим тоном считается автоматически создаваемый словарь. Для этого строковые ресурсы в приложении подлежащие переводу оформляются особым образом. Подобное оформление зависит от используемого языка программирования.
==== Описание интерфейса ====
==== Описание интерфейса ====
Если адрес описания интерфейса ''/<модуль>/foo/bar'', то по умолчанию этому интерфейсу сопоставляется словарь ''alterator-<модуль>'' и соответственно имя его специально указывать не надо.
Если адрес описания интерфейса ''/<модуль>/foo/bar'', то по умолчанию этому интерфейсу сопоставляется словарь ''alterator-<модуль>'' и соответственно имя его специально указывать не надо.
-
Вы можете явно указать другой словарь с помощью команды po-domain. Кроме того другой словарь можно задавать явно для каждого сообщения.  
+
Вы можете явно указать другой словарь с помощью команды po-domain. Кроме того другой словарь можно задавать явно для каждого сообщения.
Пример для qt:
Пример для qt:
-
<source lang="scheme">...
+
<source lang="lisp">...
(po-domain "основной словарь")
(po-domain "основной словарь")
...
...
Строка 16: Строка 21:
...
...
</source>
</source>
-
Инструкцией <tt>po-domain</tt> можно задать основной словарь, если он не должно вычисляться автоматически из адреса модуля.
+
Инструкцией <tt>po-domain</tt> можно задать основной словарь, если он не должен вычисляться автоматически из адреса модуля.
Функция <tt>_</tt> используется для получения перевода, принимает необязательный второй параметр, указывающий словарь.
Функция <tt>_</tt> используется для получения перевода, принимает необязательный второй параметр, указывающий словарь.
Строка 29: Строка 34:
</html>
</html>
</source>
</source>
-
Необязательным атрибутом <tt>po-domain</tt> можно задать основной словарь, если он не должно вычисляться автоматически.
+
Необязательным атрибутом <tt>po-domain</tt> можно задать основной словарь, если он не должен вычисляться автоматически.
-
Атрибут <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). Перевод сообщений в бэкендах устроен по тому же принципу что и в описаниях интерфейсов:
Команды, приходящие к бэкенду, содержат информацию о языке используемом для переводов (параметр language). Перевод сообщений в бэкендах устроен по тому же принципу что и в описаниях интерфейсов:
-
* основной словарь указывается явно или вычисляется как "alterator-<бэкенд>".
+
* основной словарь указывается явно или вычисляется как «alterator-<бэкенд>».
* есть функции для переводов, они или используют основной словарь или тот что указан в дополнительном параметре.
* есть функции для переводов, они или используют основной словарь или тот что указан в дополнительном параметре.
===== Бэкенд на shell =====
===== Бэкенд на shell =====
-
 
<source lang="bash">
<source lang="bash">
po_domain="название словаря"
po_domain="название словаря"
Строка 51: Строка 54:
===== Бэкенд на perl =====
===== Бэкенд на perl =====
-
 
<source lang="perl">
<source lang="perl">
$TEXTDOMAIN = "название словаря"
$TEXTDOMAIN = "название словаря"
Строка 59: Строка 61:
</source>
</source>
-
==== Единая база переводов ====
+
==== Desktop-файлы ====
-
 
+
Из desktop-файлов для перевода берутся поля Name и Comment…
-
Для переводов стоит пользоваться единой базой переводов '''alterator-l10n'''. Данный пакет содержит переводы для всех модулей альтераторов. Тем самым достигается единый стиль названий (например перевод «Apply» и «Reset»). Чтобы подключить модуль к единой базе необходимо выполнить следующие действия:
+
-
# свяжитесь с мантейнером пакета alterator-l10n ({{man|inger}}, {{man|slazav}}, {{man|cas}}) и сообщите URL репозитория в [http://git.altlinux.org git.altlinux.org]
+
-
# дождитесь когда ваш пакет будет включён в alterator-l10n
+
-
# добавьте пакет alterator-l10n в сборочные зависимости модуля (тег BuildPreReq)
+
-
 
+
-
После этого при каждой сборке пакета автоматически будут создаваться и размещаться в результирующем rpm-пакете) переводы для всех поддерживаемых языков.
+
-
Если в вашем модуле уже были свои варианты переводов (каталог po), то их надо удалить вместе с pot-файлом.
+
-
</onlyinclude>
+
-
 
+
-
[[Alterator/AlteratorL10N Более актуальтая информация о alterator-rl10n]]
+
-
 
+
-
{{Alterator modules-nav}}
+
{{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…

 
Личные инструменты