Мультиязычность сервисов

1. Переводы в интерфейсах решателей

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

Наполнение инфоресурса агента для обеспечения возможности переводов выполняется следующим образом.
  1. Под вершиной language resources создаются вершины (типа нетерминал) с метками, представляющими собой ключи.
  2. В качестве их потомков создаются текстовые константы на разных языках (согласно именам метапонятий, соответствующих кодам языков из стандарта ISO 639-3).
При этом важно понимать, что ключ не является "переводом". Для всех языков на которых должен отображаться этот ключ, переводы должны быть заданы отдельными терминалами-значениями. Для извлечения созданной языковой константы на выбранном языке необходимо использовать методы API: Интегратор решателя задач может "переопределить" переводы, выполненные разработчиками агента (если они его не устраивают и он при этом не имеет права модифицировать инфоресурс агента), своими переводами, а также "расширить" перевод на большее число языков. При работе решателя больший приоритет при отображении интерфейсного текстосодержащего элемента имеет перевод, помещённый в решатель. Порядок работы соответствует порядку создания переводов для агента - в инфоресурсе решателя задаются текстовые ключи (точно такие же как были использованы в инфоресурсе агента!), которым в понятиях-потомках присваиваются текстовые фразы на нужных языках.

Пример.
Стоит отметить, что применение метода $$(String key, Locale locale), при создании агента позволяет ввести поддержку набора языков, превышающих доступные на сайте платформы. (В настоящее время это корейский и японский языки.) Для этого необходимо в интерфейсе агента дать пользователю возможность выбирать язык отображения, наполнить инфоресурс агента ключами и переводами ключей на требуемые языки и при помощи указанного метода формировать интерфейсные элементы с текстом.

2. Переводы в API

В настоящее время API платформы не содержит методов навигации и модификации содержимого инфоресурсов с учётом языков.