data(base) i18n 的首选是什么?

What's the preferred choice for data(base) i18n?

我正在处理一个 Scala Play 2.7 项目,并且有一个用例用于保存需要 i18n 的数据库数据。

我有两个设计选择:

  1. 使用语言将数据保存在数据库中,例如en 作为密钥的一部分,并对每种支持的语言都这样做。
  2. 在数据库中保存映射到播放消息的键,然后为每个键提供相应的支持翻译。

缺点是例如对于选择 #1,需要为支持的每种新语言更新数据库;对于选项 #2,对数据库的查询需要 "decorated" 为 messages.x

中的每个键查找相应的翻译

我会选择第三个选项,将翻译密钥与呈现消息所需的参数一起存储,如何存储这些取决于您,它可以是数组或 JSON。

数据库每条消息只更新一次,添加新语言只需要更新 messages 文件,并且为了呈现一条消息,您只需要执行一个查询,无论如何您都会这样做,它只是检索了更多的数据。