消息包

当与前端或移动端应用程序交互时,经常需要展示应用程序的本地化消息。这些翻译过的值已经在 Jmix 的 .messages 文件中定义,消息包 API 提供为客户端应用开放这些消息的能力。

消息包 API 提供下列两个接口:

消息包 API 默认使用认证 token 用户的地区设定,并直接返回翻译后的值。

实体翻译

实体翻译接口支持获取实体名称和实体属性名信息的翻译内容。

/messages/entities

所有实体的名称和属性的翻译。

/messages/entities/:entityName

给定实体名称和属性的翻译。

下面示例中,展示如何通过 API 获取 Order 实体的翻译内容:

请求 Order 实体消息包
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"
}

枚举翻译

枚举翻译接口支持获取枚举名称和枚举值信息的翻译内容。

/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 请求头,可以显式的要求给定地区的翻译消息包。

中文的 Accept-Language 需要设置为以短横分隔的 zh-cnzh-CN

下面的示例中,展示如何获取 CustomerType 枚举的中文翻译:

特定语言的请求
GET http://localhost:8080/rest
            /messages
            /enums
            /rest.sample.entity.CustomerType
Accept-Language: zh-cn
Response: 200 - OK
{
  "rest.sample.entity.CustomerType": "自定义类型",
  "rest.sample.entity.CustomerType.BUSINESS": "商业",
  "rest.sample.entity.CustomerType.PRIVATE": "私有"
}