Espruino:Примеры/Локализация Bangle.js

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Локализация Bangle.js[1]

Если вы создали приложение для Bangle.js (например, следуя вот этому руководству), то, возможно, также хотите, чтобы его было проще использовать пользователям из других стран.

Для этих целей есть модуль locale. По умолчанию в прошивку Bangle.js встроен locale-модуль en_GB, но если вы хотите использовать другой язык, то можете воспользоваться приложением Languages из загрузчика приложений.

Как использовать

Просто вставьте require("locale") в свой код и используйте нужный объект.

Например, если вы хотите записать локализированную дату, просто используйте:

var myDate = new Date();
var dateString = require('locale').date(myDate);
g.drawString(dateString);

Что можно локализировать

Проще показать на примерах (для de_DE).

Примечание

Некоторые строки (например, currencySym) некорректно отображаются в консоли. Возможно, для их отображения нужно будет воспользоваться шрифтом 6x8 или другим шрифтом типа ISO10646-1.

// название Locale:
>require('locale').name
="de_DE"

// символ, используемый для валюты:
>require('locale').currencySym
="€"

// день недели из Date (длинный вариант)
>require('locale').dow(new Date())
="Donnerstag"

// день недели из Date (короткий вариант)
>require('locale').dow(new Date(), 1)
="Do"

// месяц в году из Date (длинный вариант)
>require('locale').month(new Date())
="April"

// месяц в году из Date (короткий вариант)
>require('locale').month(new Date(), 1)
="Apr"

// число, преобразованное в строку:
>require('locale').number(4.98)
="4.98"

// валюта, преобразованная в строку:
>require('locale').currency(4.98)
="4.98€"

// дистанция/длина (в метрах), преобразованная в строку:
>require('locale').distance(150)
="150m"

// автоматически выбираемая единица измерения
// для больших дистанций:
>require('locale').distance(15000)
="15km"

// скорость (в км/ч), преобразованная в строку:
>require('locale').speed(150)
="150kmh"

// температура (в градусах Цельсия), преобразованная в строку:
>require('locale').temp(150)
="150°C"

// перевод текста или фразы:
>require('locale').translate("off")
="aus"

// данные о дате из Date, преобразованные в строку (длинный вариант):
>require('locale').date(new Date())
="Donnerstag, 02. April 2020"

// данные о дате из Date, преобразованные в строку (короткий вариант):
>require('locale').date(new Date(),1)
="02.04.2020"

// данные о времени из Date, 
// преобразованные в строку (длинный вариант):
>require('locale').time(new Date())
="15:49:39"

// данные о времени из Date,
// преобразованные в строку (короткий вариант):
>require('locale').time(new Date(),1)
="15:49"

// данные о времени из Date,
// обозначающие временной интервал (пополуночи или пополудни):
>require('locale').medidian(new Date())
="" // или "pm" для en_GB

Перевод

Функция require('locale').translate() попытается перевести английский текст, который был задан в ней. В данный момент она переводит лишь несколько специфических слов:

  • Yes
  • No
  • Ok
  • On
  • Off

Но ожидается, что в будущем этот переводчик будет немного улучшен и будет переводить более широкий набор слов (даже если в тексте будут использованы другие символы).

Эта функция перевода используется внутри функций E.showMenu(), E.showMessage(), E.showPrompt() и E.showAlert(). Поэтому все показываемые меню уже будут иметь базовый перевод (если в нём используются поддерживаемые слова).

Добавление собственной локализации

Вам нужно лишь сделать так называемый «форк» (ответвление) загрузчика приложений Bangle.js – о том, как это сделать можно прочесть в этой статье.

Теперь отредактируйте файл «apps/locale/locales.js» – в него можно без труда добавлять собственные форматы даты/времени и переводы.

См.также

Внешние ссылки