Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 本地化表数据_Jpa_Localization_Internationalization - Fatal编程技术网

Jpa 本地化表数据

Jpa 本地化表数据,jpa,localization,internationalization,Jpa,Localization,Internationalization,例如:我有一个带有一些代码的表: 1, Blue, This is blue color 2, Red, This is red color - any text... 3, Green, This is green color 语言的数量未知 表可以有多个本地化字段 我使用JPA和hibernate来访问这些表 如何对这些代码和说明进行本地化?我认为应该垂直添加本地化,而不是水平添加 这意味着每种语言没有一个新的列,而是一个用于语言名称和标识符的单独表,以及另一个具有每种可能语言的本地化

例如:我有一个带有一些代码的表:

1, Blue, This is blue color
2, Red, This is red color - any text...
3, Green, This is green color
  • 语言的数量未知
  • 表可以有多个本地化字段
  • 我使用JPA和hibernate来访问这些表

如何对这些代码和说明进行本地化?

我认为应该垂直添加本地化,而不是水平添加

这意味着每种语言没有一个新的列,而是一个用于语言名称和标识符的单独表,以及另一个具有每种可能语言的本地化值的表


您上面显示的表是使用中性语言的主表,在您的英语案例中,我上面提到的第二个表将具有相同的id(1,2,3…),用于字符串id,然后是列LanguageId和LanguageText,该LanguageId具有特定的本地化值。

与另一个答案相反:

我认为,您应该创建一个包含区域设置作为额外字段的表。这将使您能够在消息id和区域设置上构建索引,以加快搜索速度。它还将使管理接口(我假设您有一个,因为否则您将使用属性文件)更易于构建,因为您只需要在JPA端处理一个表和一个对象

该表如下所示:

table messages
   id number,
   message_code number,
   locale string, // or number, depending on your app
   message1 string
   message2 string
   message3 string // or more/less

消息\u code
并非绝对必要,但有助于在不同的上下文中重用此表。

您的意思是第二个表看起来像:CS,1,1,Modra CS,1,2,to je Modra barva CS,2,1,Cervena CS,2,2,to je Cervena barva-nejaky text这不是关于标签和标题-这是关于代码列表的本地化(用户可以执行CRUD操作)。这就是属性文件不可用的原因。基表将只包含两个消息代码,而不是“蓝色”和“这是蓝色”?不一定。您可以包含更多消息。您只需在
消息代码
字段中标识所需的消息即可(因此,您可以将此表用于所有本地化)。我已相应地更新了我的答案。