Локализация

Локализация приложения заключается в том, чтобы пользователь видел надписи в интерфейсе приложения на том языке, который он выбрал для работы. Такими надписями являются, например:

  • Команды меню,
  • Заголовки кнопок, полей, переключателей и т.д.,
  • Картинки,
  • Строки, формируемые алгоритмами на встроенном языке.

На текущий момент обеспечивается только локализация строк во встроенном языке. Остальные возможности будут реализованы позже.

Языки локализации и язык по умолчанию

Чтобы локализация приложения стала возможной, в описании проекта должны быть указаны несколько языков локализации и один из них должен быть указан как язык по умолчанию. Например:

Ид: e95d81e9-11b7-40ff-a7e0-962f3233d1a3
Представление: Демо
Версия: 1.0
ПредставлениеРазработчика: admin
РежимСовместимости: 2.0
ЯзыкиЛокализации: 
    - Русский
    - Английский
ЯзыкПоУмолчанию: Русский

Если не указать ни одного языка это будет означать, что проект не нуждается в локализации.

В качестве языков локализации можно выбрать только те, которые являются значениями перечисления Язык.

Элемент проекта вида «ЛокализованныеСтроки»

Для хранения строк, которые переводятся на другие языки, существуют элементы проекта вида ЛокализованныеСтроки. Каждый такой элемент хранит локализуемые строки, используемые во многих модулях проекта.

Элемент содержит имена локализуемых строк и их значения на языке по умолчанию. Блоки идентификаторов разделены на две секции:
  • Строки: их можно использовать в описании элементов проекта (в будущем) и во встроенном языке;
  • Шаблоны: их можно использовать только во встроенном языке; в них можно подставлять значения.

Например:

ВидЭлемента: ЛокализованныеСтроки
ОбластьВидимости: Подсистема
Ид: d95a940a-f575-40a1-9c9f-7eb60f6396b2
Имя: ЛокализованныеСтрокиГлавная
Строки: 
    -
        Имя: ИмяСправочникаТовары
        Значение: Номенклатура
Шаблоны: 
    -
        Имя: СтрокаТекста
        Значение: "Текущее время: %0"

Локализация

Чтобы сохранить в проекте значения локализуемых строк на другом языке, выполните следующие действия:
  • Добавьте в проект раздел Локализации (в контекстном меню Новый > Локализации);
  • В локализацию добавьте новый Язык локализации, тот, на который нужно перевести строки (в контекстном меню Новый > Язык локализации);
  • В язык локализации добавьте Элемент локализации (в контекстном меню Новый > Элемент локализации); его имя должно совпадать с именем элемента вида ЛокализованныеСтроки.

Например:

Элемент локализации должен содержать только секции с именами и значениями локализуемых строк. Например:

Строки:
-
    Имя: ИмяСправочникаТовары
    Значение: Nomenclature
Шаблоны: 
-
    Имя: СтрокаТекста
    Значение: "Current time: %0"

Как использовать во встроенном языке

Во встроенном языке можно обратиться к локализованной строке, указав имя элемента проекта вида ЛокализованныеСтроки и через точку имя локализованной строки. Если это строка-шаблон, то подставляемое значение можно передать в виде аргумента.

Сообщить(ЛокализованныеСтрокиГлавная.СтрокаТекста("${Время.Сейчас()|ч:мм}"))

В этом примере используется строка-шаблон с именем СтрокаТекста, в которую подставляется отформатированное представление текущего времени:

"${Время.Сейчас()|ч:мм}"

Как запустить приложение с другим языком

Существует порядок, по которому «1С:Шина» определяет, какой язык нужно выбрать для конкретного пользователя. Этот порядок описан в следующем разделе.

Чтобы проверить, как работает приложение на другом языке локализации, проще всего запустить приложение и указать нужные региональные установки в параметре URL. Например, для английского языка:

http://localhost:9090/applications/DEMO?locale=en_EN
В результате пример с методом Сообщить(), показанный выше, при запуске с русскими региональными установками выведет строку на языке по умолчанию (русском):
Текущее время: 5:37

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

Current time: 5:38

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

  • Параметр locale, передаваемый в URL. Например:
    http://localhost:9090/applications/DEMO?locale=en_EN
    Если параметр не указан или не поддерживается «1С:Шиной», то используется следующий пункт;
  • Первый поддерживаемый приложением язык из списка предпочтительных языков браузера. В случае неудачи используется следующий пункт. Возможные причины неудачи:
    • В списке языков браузера нет ни одного языка из поддерживаемых «1С:Шиной»;
    • Браузер устаревший и у него нельзя узнать предпочтительные языки;
  • Локаль приложения (в панели управления Приложения > нужное приложение > Настройки > Общие > Локаль; задается при создании). Если локаль приложения не указана, тогда используется следующий пункт;
  • Язык по умолчанию из файла описания проекта или русский язык (значение по умолчанию).