Messages API

При взаимодействии с интерфейсом или мобильным приложением часто требуется отображать локализованные сообщения. Поскольку эти значения уже определены в файлах .messages Jmix, Messages API передает эти значения клиентскому приложению.

Messages API состоит из следующих конечных точек:

  • Entity Translations передает переводы для сущностей и атрибутов сущностей.

  • Enum Translations передает переводы для перечислений и их значений.

Messages API по умолчанию использует локаль пользователя, получающего токен авторизации, и возвращает соответствующе переведенные значения.

Перевод сущностей

Операция Entity Translations позволяет получить информацию об имени сущности и переведенных именах ее атрибутов.

/messages/entities

Перевод имени сущности и атрибутов всех сущностей.

/messages/entities/:entityName

Перевод имени сущности и атрибутов данной сущности.

В следующем примере мы запросим через API переведенные значения для сущности Order:

Messages for Order Entity Request
GET http://localhost:8080/rest
            /messages
            /entities
            /rstex11_Order
Response: 200 - OK
{
  "rstex11_Order": "Order",
  "rstex11_Order.amount": "Amount",
  "rstex11_Order.createdBy": "Created by",
  "rstex11_Order.createdDate": "Created date",
  "rstex11_Order.customer": "Customer",
  "rstex11_Order.date": "Date",
  "rstex11_Order.deletedBy": "Deleted by",
  "rstex11_Order.deletedDate": "Deleted date",
  "rstex11_Order.id": "Id",
  "rstex11_Order.lastModifiedBy": "Last modified by",
  "rstex11_Order.lastModifiedDate": "Last modified date",
  "rstex11_Order.lines": "Lines",
  "rstex11_Order.version": "Version"
}

Перевод перечислений

Операция Enum Translations позволяет получить информацию об имени перечисления и его переведенных значениях.

/messages/enums

Перевод имени перечисления и значений всех перечислений.

/messages/enums/:enumClassName

Перевод имени перечисления и значений данного перечисления.

Параметр enumClassName представляет собой полное имя перечисления, включая имя пакета. Поэтому используйте rest.sample.entity.CustomerType вместо просто CustomerType.

В следующем примере мы запросим через API переведенные значения для перечисления CustomerType:

Messages for CustomerType Request
GET http://localhost:8080/rest
            /messages
            /enums
            /rest.sample.entity.CustomerType
Response: 200 - OK
{
  "rest.sample.entity.CustomerType": "CustomerType",
  "rest.sample.entity.CustomerType.BUSINESS": "Business",
  "rest.sample.entity.CustomerType.PRIVATE": "Private"
}

Запросить конкретные языки

Также вы можете явно запросить переведенные сообщения для конкретной локали, задав заголовок Accept-Language. В следующем примере показано, как запросить перевод перечисления CustomerType на немецкий язык:

Language-specific Request
GET http://localhost:8080/rest
            /messages
            /enums
            /rest.sample.entity.CustomerType
Accept-Language: de
Response: 200 - OK
{
  "rest.sample.entity.CustomerType": "Kundentyp",
  "rest.sample.entity.CustomerType.BUSINESS": "Geschäftskunde",
  "rest.sample.entity.CustomerType.PRIVATE": "Privatkunde"
}