我们这里有问题。
我们需要将网站翻译成多种语言。
我们已经使用 gettext 来翻译静态内容。但我们必须将一些文本内容翻译成多种语言。
ui不是问题。
我们找到了两种翻译文本的方法。
1. 在我们的文本输入中使用 JSON
为什么这个解决方案不好。每个文本输入都需要更大,因为我们无法猜测属性的实际大小。
使用保留对原始模型的引用并翻译每个字段的翻译表。它仍然需要大字段,因为我们无法通过记录定义字段大小。
最后,我提出的最佳解决方案是创建一个转换表。该表将保留其他表的外键。对于每个翻译,我们都会复制需要翻译的记录。翻译表内部有4个字段,model_name(primary)、reference_id(primary)、translated_id(primary)、locale(primary)。该解决方案使得同一模型不可能以同一种语言进行多次翻译。
最后但并非最不重要的一点是,我们可以使用像某人提议的东西......数据库 gettext。我们有一个包含字符串且仅包含字符串(键、文本、区域设置)的表,因此我们可以搜索模型,即与模型中使用的字符串相同的字符串,然后使用我们找到的字符串代替。
我的观点是,所有这些解决方案都是 hack,第 4 个解决方案可能是看起来更好的一个。
由于我没有找到任何好的文档,我真的很想让这个问题脱颖而出。
这是我们处理多种语言的方法(我们也有一些专家研究了这个解决方案!)。
- 我们在数据库中有一个文本表(textid、key、nl、uk、de、fr)
- 我们有文本表的外键(例如来自productnameid)
- html 页面中需要翻译的静态文本用哈希值包围:##name##
- 在 html 内容从服务器发送到客户端之前,将解析 htmlstream 以在哈希值之间转换内容。
- 翻译后的文本存储在缓存中,这使得该解决方案灵活且快速
它对我们有用,我们建立的网站每小时浏览量超过 10 万次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)