Локализация Дополнений

Переводить дополнения — легко!

Добавление сообщений

Под addons-l10n/en/, создайте фай под названием ИДЕНТИФИКАТОРДОПОЛНЕНИЯ.json, где фразу “ИДЕНТИФИКАТОРДОПОЛНЕНИЯ” следует заменить Вашим идентификатором дополнения (название папки). Напишите Ваши сообщения, которые Вы хотите перевести там.

{
  "ADDONID/meow": "Meow",
  "ADDONID/cats": "{number, plural, one {1 cat} other {# cats}}",
  "ADDONID/eat": "I want to eat {food}!",
  "ADDONID/salmon": "salmon",
  "ADDONID/sardine": "sardine",
  "ADDONID/move-steps": {
    "string": "move {number} steps",
    "developer_comment": "Please translate this to match Scratch's official translation for the block."
  }
}

Прототипы

Иногда в сообщениях надо иметь динамически генерируемые вещи. Например, число котов, или ввод. Для таких случаев можно использовать прототипы, к примеру, {имяПрототипа}. Имя прототипа должно содержать только буквы (никаких чисел).

Множественные числа

А что если прототип — число? Мы можем использовать множественные числа при помощи {placeholderName, plural, one {when there is one thing} other {when there are # things}}. Если прототип — 1, то он строка произнесёт “when there is one thing”, а иначе скажет “when there are (прототип) things”.

Комментарии разработчика

Transifex отобразит комментарий разработчика, когда переводчик выделит данную строку. Эти комментарии обычно используются для запроса определённого перевода строки или для дополнительного контекста языкам, которые не различают заглавные и строчные буквы.

Использование переводов

Измените первую линию Вашего пользовательского скрипта на что-нибудь вроде:

export default async function ({ addon, console }) {

в:

export default async function ({ addon, console, msg }) {

Добавленная msg — это функция, которой пользуются для вынимания переводов. Например, text = "Meow" теперь может быть text = msg("meow"). Идентификаторами дополнения и косыми чертами пренебрегать.

Прототипы

Вы можете предоставлять значения прототипов

cat = msg("cats", {number: 1}) // показывает "1 cat"
cats = msg("cats", {number: 3}) // показывает "3 cats"
hungry = msg("eat", {food: "cod"}) // показывает "I want to eat cod!"

Вы также можете “вкладывать” сообщения:

hungry2 = msg("eat", {food: msg("salmon")}) // показывает "I want to eat salmon!"

Безопасность

Если вы пишете сырой HTML, то msg следует заменить более безопасной safeMsg.