我有一个Hibernate模型,(简化)看起来像这样:
public class CoverageLine {
private Long id;
private String coverageText;
private boolean coveragePresetTo = true;
private OnNewPolicy onNewPolicy = OnNewPolicy.SHOW;
}
我需要将coverageText(可由最终用户)翻译成任意多种语言,但使用相同的ID,这样我就可以用英语或德语请求策略(添加行),并且getCoverageText()返回的相关文本版本。其他字段在数据库中不可翻译,它们使用资源文件进行翻译,因此数据库中的对象的多个版本是不可取的。
我的暂定计划是创建一个JSON clob字段,并将所有值存储在其中([{“lang”:“en”,“value”,“....”}],[{“lang” :“de”...}]),将语言设置为瞬态字段,并使用get / set方法操作JSON,但这并不是最佳实践的感觉。或者,要使用第二个包含行ID,语言和字符串的表,但这可能会使我的数据模型充分膨胀,而不仅仅是拥有更多的SQL-y数据。
有什么建议吗?
答案 0 :(得分:2)
将所有选择发送到用户界面不是我的首选。
一种方法是将词汇存储在表格中。 Coverage表将有一个语言列外键,用于选择您正在处理的语言。该值将被加载到对象中,您就完成了。
缺点是区域设置更改需要往返服务器,数据库和返回。
Spring使用依赖于语言环境的视图完成此操作。也许你也可以试试。