Локализация типовых решений

Можно разрабатывать решения, которые будут включать в себя мультиязычный интерфейс. Автоматизированному переводу подвергаются отображаемые названия процессов, экранов, любых надписей и визуальных элементов.

Пример к данной статье находится в https://github.com/dvdocumentation/simpleui_samples/tree/main/Sample%204%20localization

Для работы с несколькими словарями нужно создать и указать в свойстве конфигурации «Словари» JSON-строку примерно такого вида:

{“en”:{“ключ 1”: “перевод 1 en”, “ключ 2”: “перевод 2 en”},{“ru”:{“ключ 1”: “перевод 1 ru”, “ключ 2”: “перевод 2 ru”}}

Т.е. перечисляются словари – en,ru и т.д. , в интерфейсе указываются ключи, а в словарях переводы ключей

Так помимо простых экранных форм и надписей переводятся и сложные элементы, задаваемые в переменных (например таблицы, списки карточек, выпадающие списки и т.д.) то элементы перевода (например заголовков таблицы) должны быть включены в само значение такой переменной. Это достигается за счет шаблонизатора. Шаблоны задаются между квадратными скобками например тут Barcode и Qty выступают ключами в словарях и если в словарях будет перевод, то они будут переведены

table  = {
  "type": "table",
  "textsize": "20",

  "columns": [
  {
      "name": "barcode",
      "header": "[Barcode]",
      "weight": "2"
  },
  {
      "name": "name",
      "header": "Name",
      "weight": "2"
  },
    {
      "name": "qty",
      "header": "[Qty]",
      "weight": "1"
  }
  ]
  }

Таким образом нужно задать все переводы ключей. Если перевод отсутствует, будет отображен просто ключ.

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

Для этого есть несколько команд:

DEVICE_LOCALE - константа в hashMap, в которой храниться язык, заданный в настройках системы на устройстве

setLocale - команда, задающая язык пользовательского интерфейса – т.е. указывающая приложению, какой словарь из списка словарей следует применить при загрузке. Например, hashMap.put(«setLocale»,»en»)