Skip to main content

Словари локализации

Словари локализации предназначены для перевода пользовательского интерфейса надстройки на различные языки. Файл словаря расположен в каталоге i18n домашнего каталога надстройки, и представляет собой код на языке программирования Lua. Название файла соответствует коду языка, который он предоставляет, например, ru.lua – словарь для русского языка.

Пример словаря для немецкой локализации (имя файла – de.lua):


return {
de = {
description = "Testerweiterung für Lokalisierung",
app_name = "Lokalisierungstest",
good_bye = "Auf Wiedersehen!",
age_msg = "Ihr Alter beträgt %{age}.",
phone_msg = {
one = "Sie haben eine neue Nachricht.",
other = "Sie haben %{count} neue Nachrichten."
}
}
}

При запуске надстройки выполняется автоматический поиск подходящего словаря по следующей схеме:

  • если каталог i18n содержит словарь, который соответствует текущему языку операционной системы, он загружается в качестве основного словаря;
  • если каталогi18n не содержит словарь, соответствующий текущему языку операционной системы, то загружается словарь языка, код которого соответствует значению ключа fallbackLanguage в файле регистрации надстройки Package.lua (см. таблицу 2);
  • если значение ключа fallbackLanguage не задано, либо отсутствует словарь для данного кода языка, то загружается словарь для кода языка «en»;
  • если словарь для кода языка «en» не найден, то расширение не загружается.

Словари должны содержать все идентификаторы, используемые в файле регистрации надстройки или в файлах сценариев надстройки. При отсутствии идентификатора возникает ошибка выполнения сценария.

Пример​


local TestMessages = {}
function TestMessages.printMsg()
print("Current locale: " .. getCurrentLocale())
print("Chosen locale: " .. i18n.getLocale())
print("Fallback locale: " .. i18n.getFallbackLocale())
print(i18n('good_bye'))
print(i18n('age_msg', {age = 81}))
print(i18n('phone_msg', {count = 1}))
print(i18n('phone_msg', {count = 9}))
end
return TestMessages