Перейти к основному содержимому

Локализация

Локализация приложения позволяет пользователю видеть надписи в интерфейсе приложения на том языке, который он использует для работы (порядок определения языка локализации). Подобные надписи могут располагаться на таких элементах, как:

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

Полный список компонентов, поддерживающих подстановку готовых локализованных строк, можно посмотреть здесь.

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

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

Ид: 64d5452a-9771-4623-b589-c440739364a4
РежимСовместимости: 5.0
Поставщик: e1c
Имя: DemoProject
Версия: 1.0
Представление: "Demo CRM"
ЯзыкиЛокализации:
- Русский
- Английский
ЯзыкПоУмолчанию: Русский

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

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

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

Чтобы создать элемент проекта вида ЛокализованныеСтроки, выполните следующие действия:

  1. Щелкните правой кнопкой мыши по имени нужной подсистемы и выберите Новый ⟶ Элемент проекта в контекстном меню.

  2. В открывшемся меню нажмите Локализованные Строки.

  3. Введите имя создаваемого элемента проекта.

  4. «1С:Исполнитель» предложит вам добавить файлы локализации на других языках. Нажмите Создать, чтобы автоматически добавить раздел локализации к проекту. Если вы хотите создать этот раздел позднее, нажмите Закрыть.

Элемент проекта вида ЛокализованныеСтроки содержит имена локализуемых строк и их значения на языке по умолчанию. Блоки идентификаторов разделены на две секции:

  • Строки

    Строки можно использовать в описании элементов проекта и во встроенном языке.

  • Шаблоны

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

Пример:

ВидЭлемента: ЛокализованныеСтроки
Ид: d0adc076-d030-4546-bd1a-8b497668b0fc
Имя: ЛокализованныеСтроки
ОбластьВидимости: ВПроекте
Строки:
Мероприятия: Мероприятия
Задачи: Задачи
События: События
Событие: Событие
Роль: Роль
Шаблоны:
ТекущееВремя: "Текущее время: %0"
СозданаЗадача: "Создана задача \"$0\""
СозданоСобытие: "Создано событие \"$0\""

Вы можете указать нужные строки как в YAML-файле, так и в палитре свойств элемента проекта вида ЛокализованныеСтроки.

Раздел проекта «Локализация»​

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

  1. Щелкните правой кнопкой мыши по имени нужной подсистемы и выберите Новый ⟶ Локализации в контекстном меню.

  2. Добавьте язык локализации, на который нужно перевести строки. Для этого щелкните правой кнопкой мыши по разделу Локализация и нажмите Новый ⟶ Язык локализации.

  3. Выберите язык локализации в открывшемся меню.

  4. Создайте новый элемент локализации. Щелкните правой кнопкой мыши по разделу с языком локализации и выберите Новый ⟶ Элемент локализации.

  5. Введите имя элемента локализации. Оно должно совпадать с именем элемента проекта вида ЛокализованныеСтроки. «1С:Исполнитель» отобразит список существующих элементов проекта типа Локализованные Строки, из которого вы можете выбрать нужное имя.

В результате структура проекта будет выглядеть следующим образом:

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

Строки:
Мероприятия: Activities
Задачи: Tasks
События: Events
Событие: Event
Роль: Role
Шаблоны:
ТекущееВремя: "Current time: %0"
СозданаЗадача: "Task \"$0\" created"
СозданоСобытие: "Event \"$0\" created"

Вы можете указать перевод строк как в YAML-файле, так и в палитре свойств элемента локализации.

Использование в значениях свойств элементов​

В случае использования локализованной строки в значениях свойств элементов, описанных в YAML, необходимо указать идентификатор локализованной строки, начиная с символа $. Идентификатор локализованной строки состоит из трех частей и выглядит следующим образом: $<Имя подсистемы>::<Имя элемента проекта локализованных строк>.<Имя локализованной строки в данном элементе>.

Примеры:

  1. Свойство Представление у элемента проекта НавигационнаяКоманда:

    Тип: НавигационнаяКоманда
    Представление: $Мероприятия::ЛокализованныеСтроки.Задачи
    ТипФормы: ЗадачиФормаСписка
  2. Группа свойств Интерфейс у элемента проекта Справочник:

    ВидЭлемента: Справочник
    Имя: События
    Ид: 17c884df-fd27-48d8-a6c5-75c87bf0e20f
    ОбластьВидимости: ВПроекте
    Интерфейс:
    Объект:
    Форма: СобытияФормаОбъекта
    Представление: $Мероприятия::ЛокализованныеСтроки.Событие
    Список:
    Форма: СобытияФормаСписка
    Представление: $Мероприятия::ЛокализованныеСтроки.События
    Реквизиты:
    -
    Имя: Код
    Тип: Строка
  3. Свойство Заголовок у компонента ПолеВвода:

    Тип: ПолеВвода<РолиУчастниковМероприятия?>
    Заголовок: $Мероприятия::ЛокализованныеСтроки.Роль
    Имя: ПолеВводаРоли
    РастягиватьПоГоризонтали: Истина
    СообщениеОшибка: Выберите роль
совет

Если вам необходимо задать строку, начинающуюся с символа «$», экранируйте данный символ с помощью еще одного символа «$». Пример:

Представление: $$Нелокализованное представление

«1С:Исполнитель» также позволяет вам задавать идентификаторы локализованных строк в палитре свойств элементов проекта и компонентов интерфейса. Для этого активируйте настройку Использовать локализованное значение для нужного свойства и выберите требуемое значение из списка. Например, для элемента проекта НавигационнаяКоманда из первого примера настройка свойства Представление будет выглядеть следующим образом:

Правила разрешения коллизий такие же, как и при обращениях к другим объектам встроенного языка:

  • Если локализованные строки находятся в той же подсистеме, где и вызываются, то указание подсистемы после «$» необязательно.
  • Если подсистема с нужными локализованными строками импортируется, то указание подсистемы после «$» необязательно.
  • Коллизии локализованных строк с текущей и импортируемыми подсистемами разрешается в пользу локальных локализованных строк.
  • Необходимо указывать нелокальную подсистему в идентификаторе локализованных строк, если подсистема используется, но не импортируется.

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

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

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

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

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

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

Существует порядок, по которому «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С:Исполнителем», то используется следующий пункт.

  • Поддерживаемый приложением язык из списка предпочтительных языков браузера. Список языков браузера берется из значения HTTP-заголовка Accept-Language. В случае неудачи используется следующий пункт. Возможные причины неудачи:

    • В списке языков браузера нет ни одного языка из поддерживаемых «1С:Исполнителем».
    • Браузер устарел, и у него нельзя узнать предпочтительные языки.
  • Локаль приложения (в панели управления Приложения ⟶ нужное приложение ⟶ Настройки ⟶ Общие ⟶ Локаль), которая задается при создании приложения. Если локаль приложения не указана, тогда используется следующий пункт.

  • ЯзыкПоУмолчанию из файла описания проекта.