java - 数据库模型国际化玩法框架

标签 java database-design jpa playframework

我想用 play! 编写一个多语言应用程序。我以前从未这样做过,所以我首先寻求一些如何正确执行此操作的建议。

任务: 假设我有一个带有问题和答案的简单应用程序。把它想象成一项调查。用户根据语言选择问题并以正确的语言显示答案。 为了更好地理解模型将如下所示:

问题:id,问题字符串

答案:id、fk_questionId、answerString、isRightBool

如您所见,通常是 1:n 关系。但现在如何实现多语言支持呢?

  1. 一个想法是复制整个数据库...这个想法看起来很简单但丑陋,因为以后的更改会产生额外的开销...我想这将是一场噩梦。
  2. 其他字段,例如 QuestionStringGerman、questionStringEnglish。也不喜欢这个主意...
  3. 每个模型类的附加表,具有 1:n 关系。就像question_lang和answer_lang一样。列是语言。看起来更容易处理。
  4. 一张表可容纳所有翻译。列是语言。似乎最容易纠正,但很难处理。

哪种方法最适合动态翻译。也许我错过了什么。如果有人能告诉我解决这个问题的正确方法是什么,我会很高兴。

提前致谢!

最佳答案

我实际上已经做过一次了。

我的解决方案是使用三个表:

table1: QuestionId(qid,其他字段) 表2:问题(qqid、fk_qid、问题、语言集、其他字段) 表3:答案(id,fk_qqid,答案,其他字段)

这样,您就可以拥有任意多种语言。每个语言问题将被视为一个独立的记录。要获取同一问题的所有翻译,questionId 的 qid 将帮助您获取该集合。

关于java - 数据库模型国际化玩法框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9424117/

相关文章:

java - org.springframework.data.annotation.Transient 与 javax.persistence.Transient

java - 无法在 log4j 中将 MaxFileSize 设置为值 "100MB"

带有泛型的 Java 工厂模式

java - Guava 是否提供对定义字符范围的支持?

mysql - mongo 是否适合与 MySQL 一起使用?

mysql - 导师、学生、类(class)数据库设计

java - 嵌套 n :m + attributes JPA

java - Collection 的 Collection

java - 从性能上来说,线程(比如swing线程) "interfere"和我的线程有关系吗?

database-design - 数据库设计: Circular dependency