Словари локализации
Словари локализации предназначены для перевода пользовательского интерфейса надстройки на различные языки. Файл словаря расположен в каталоге 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