AngularJS:将本地化的用户输入数据存储在翻译json文件或数据库中

时间:2017-10-11 08:38:35

标签: angularjs database architecture localization

我遇到了与本地化相关的架构问题。我关注的是存储和管理本地化用户数据的最佳方法是什么。让我解释: 我有一个带有mysql数据库的AngularJS webapp。对于文本翻译,我们使用angular-translate和文件。对于标签,静态文本等工作得很好。

另一方面,用户可以创建项目(即出租房屋)并填写标题和描述。他还能够编辑该信息。此信息由表单收集并存储在DB中。

我们希望为这些用户输入数据提供翻译,并考虑到这种情况,我看到两种方法:

  1. 用户以数据库的语言存储数据。我们将翻译存储在DB(翻译表...)中,并提供翻译。
  2. 用户以数据库的语言存储数据。我们将翻译存储在locale.json文件中,并在数据库中创建一个键以获得这些翻译(angular-translate)。
  3. 在这两种情况下,我们都需要翻译用户是创建还是更新标题或说明。但看起来如果将它存储在数据库中,至少你已经有了一个默认翻译。如果将其存储在json文件中,则会将默认转换数据保存在两个位置。

    从维护的角度来看,使用翻译文件看起来有点复杂。此外,每次添加或更新用户输入文本时都要考虑到需要进行部署。

    但是,从性能的角度来看,翻译文件可能是更好的方法。当用户更改语言时,您可能至少要向数据库保存一个查询。

    从架构的角度来看,我会说用户数据应存储在数据库中。

    您怎么看?

2 个答案:

答案 0 :(得分:0)

TL; DR :选项1.您可以缓存对转换表的访问权限或创建物化视图(如果您的DBMS支持它们),以便对您的Property实体进行非规范化处理,并且按语言翻译的行。

就个人而言,我认为不需要缓存 - 用户在生产中会改变语言的次数?

答案 1 :(得分:0)

始终存储用户输入。

仅当您始终需要时才将翻译存储在数据库中。 如果您很少需要,请为用户提供Transalation按钮。

做什么更便宜。如果你只使用另一种语言输入千分之一,并且它很少被访问,那么浪费宝贵的数据库空间毫无意义,那就让它按需要随时完成。

另外,您如何知道需要翻译?有些人是结账性的,有些人使用另一种语言的设备(外国游客)(使用另一种语言设备)。

观测值:。 你知道自动翻译是废话吗?不是吗?那么你是如何翻译的?