我遇到了与本地化相关的架构问题。我关注的是存储和管理本地化用户数据的最佳方法是什么。让我解释: 我有一个带有mysql数据库的AngularJS webapp。对于文本翻译,我们使用angular-translate和文件。对于标签,静态文本等工作得很好。
另一方面,用户可以创建项目(即出租房屋)并填写标题和描述。他还能够编辑该信息。此信息由表单收集并存储在DB中。
我们希望为这些用户输入数据提供翻译,并考虑到这种情况,我看到两种方法:
在这两种情况下,我们都需要翻译用户是创建还是更新标题或说明。但看起来如果将它存储在数据库中,至少你已经有了一个默认翻译。如果将其存储在json文件中,则会将默认转换数据保存在两个位置。
从维护的角度来看,使用翻译文件看起来有点复杂。此外,每次添加或更新用户输入文本时都要考虑到需要进行部署。
但是,从性能的角度来看,翻译文件可能是更好的方法。当用户更改语言时,您可能至少要向数据库保存一个查询。
从架构的角度来看,我会说用户数据应存储在数据库中。
您怎么看?
答案 0 :(得分:0)
TL; DR :选项1.您可以缓存对转换表的访问权限或创建物化视图(如果您的DBMS支持它们),以便对您的Property
实体进行非规范化处理,并且按语言翻译的行。
就个人而言,我认为不需要缓存 - 用户在生产中会改变语言的次数?
答案 1 :(得分:0)
始终存储用户输入。
仅当您始终需要时才将翻译存储在数据库中。 如果您很少需要,请为用户提供Transalation按钮。
做什么更便宜。如果你只使用另一种语言输入千分之一,并且它很少被访问,那么浪费宝贵的数据库空间毫无意义,那就让它按需要随时完成。
另外,您如何知道需要翻译?有些人是结账性的,有些人使用另一种语言的设备(外国游客)(使用另一种语言设备)。
观测值:。 你知道自动翻译是废话吗?不是吗?那么你是如何翻译的?