Donutgramплагины
На этой страницеЯзык интерфейса

Локализация

Выбирайте строки по языку клиента и сохраняйте переводы в локальных модулях.

Язык интерфейса

SDK не требует отдельного формата переводов. Для небольшого плагина достаточно JavaScript-объекта со строками и языка из environment.get().

Получить язык

const environment = await api.environment.get();
const russian = environment.locale.toLowerCase().startsWith("ru");
const title = russian ? "Моя команда" : "My command";

environment содержит также версию клиента, оформление и режим энергосбережения. Это сведения об окружении, а не идентификатор аккаунта.

Словарь строк

Вынесите перевод в modules/strings.js:

const messages = {
  ru: { command: "Моя команда", ready: "Готово" },
  en: { command: "My command", ready: "Done" }
};

export function strings(locale) {
  return messages[locale.toLowerCase().startsWith("ru") ? "ru" : "en"];
}

В activate загрузите окружение, выберите словарь и используйте его в командах и собственных страницах. Оставляйте запасной язык для неизвестной локали.

Смена языка

В перечне событий есть locale.changed. Если подписка доступна, используйте её для обновления собственных данных интерфейса. Наличие имени события в типах не заменяет проверку доступности и обработку отказа.

Манифест

Поля name, description и заголовки settingsSchema — обычные статические строки. YAML-локали и автоматические подстановки Elyx этим форматом не обрабатываются.

Проверка перевода

Проверьте длинные подписи, числа, переносы текста и разные размеры шрифта на устройстве. Перевод не должен менять id команды, ключ настройки или идентификатор узла страницы.