Messages API
При взаимодействии с интерфейсом или мобильным приложением часто требуется отображать локализованные сообщения. Поскольку эти значения уже определены в файлах .messages
Jmix, Messages API передает эти значения клиентскому приложению.
Messages API состоит из следующих конечных точек:
-
Entity Translations передает переводы для сущностей и атрибутов сущностей.
-
Enum Translations передает переводы для перечислений и их значений.
Messages API по умолчанию использует локаль пользователя, получающего токен авторизации, и возвращает соответствующе переведенные значения. |
Перевод сущностей
Операция Entity Translations позволяет получить информацию об имени сущности и переведенных именах ее атрибутов.
/messages/entities
-
Перевод имени сущности и атрибутов всех сущностей.
/messages/entities/:entityName
-
Перевод имени сущности и атрибутов данной сущности.
В следующем примере мы запросим через API переведенные значения для сущности Order
:
Order
Entity RequestGET http://localhost:8080/rest
/messages
/entities
/rstex11_Order
{
"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
:
CustomerType
RequestGET http://localhost:8080/rest
/messages
/enums
/rest.sample.entity.CustomerType
{
"rest.sample.entity.CustomerType": "CustomerType",
"rest.sample.entity.CustomerType.BUSINESS": "Business",
"rest.sample.entity.CustomerType.PRIVATE": "Private"
}
Запросить конкретные языки
Также вы можете явно запросить переведенные сообщения для конкретной локали, задав заголовок Accept-Language
. В следующем примере показано, как запросить перевод перечисления CustomerType
на немецкий язык:
GET http://localhost:8080/rest
/messages
/enums
/rest.sample.entity.CustomerType
Accept-Language: de
{
"rest.sample.entity.CustomerType": "Kundentyp",
"rest.sample.entity.CustomerType.BUSINESS": "Geschäftskunde",
"rest.sample.entity.CustomerType.PRIVATE": "Privatkunde"
}