我喜欢用Play编程多语言应用程序!我从来没有这样做过,所以我正在寻找一些建议如何在第一时间做到这一点。
任务: 我假设我有一个简单的应用程序与问题和答案。想象它就像一项调查。根据用户选择语言的语言,答案以正确的语言显示。 为了更好的不合格,模型看起来像:
问题:id,questionString
回答:id,fk_questionId,answerString,isRightBool
正如你所见,通常的1:n关系。但现在如何处理多语言支持?
哪种方法最适合动态翻译。也许我想念一些东西。如果有人能告诉我解决这个问题的方法是什么,我会很高兴的。
提前谢谢!答案 0 :(得分:1)
我实际做过一次。
我的解决方案是使用三个表:
table1:questionId(qid,其他字段) table2:问题(qqid,fk_qid,question,languageSet,其他字段) table3:答案(id,fk_qqid,答案,其他字段)
通过这种方式,您可以拥有任意数量的语言。每个语言问题将被视为独立记录。为了获得相同问题的所有翻译,questionId的qid将帮助您获得该设置。答案 1 :(得分:0)
我个人如下:
Table: Language
Id, Name
Table: Translation
Id, UniqueName(IdxUnique), LanguageId(FK), TranslationText
Table: Question
Id, TranslationUniqueName(FK)
Table: Answer
Id, QuestionId(FK), IsRight, TranslationUniqueName(FK)
我在使用翻译ID和UniqueName(Key)之间徘徊 - Id在性能方面可能略微有益但使用有意义的唯一键使开发更容易(例如设置一些东西)到WelcomeText
并让系统查找翻译比将其设置为16
更清晰
此外,如果您正在添加/删除/复制翻译,则密钥更具可移植性,尤其是跨多个数据库实例(不同环境)。
在回答您对其他答案的评论时,对于未选择任何语言的情况,您可以在Language
表格本身中添加权重,或将LanguageId
与用户帐户相关联。你也可以(如果你想要聪明)尝试根据用户的位置进行猜测(但是你应该总是给他们改变的选项 - 没有比你被google.es
重定向更令人讨厌的了。在西班牙)。
在任何情况下,您进行翻译的方法都应该为您执行此操作 - 例如,您的应用只需GetTranslation('WelcomeText')
- 您的GetTranslation()
方法可以查找要使用的相应语言并获取纠正string
。