谁能向我指出一些解决数据库级别任务国际化的模式?
最简单的方法是为每个文本列的每种语言添加一个文本列,但这在某种程度上有点难闻 - 我真的希望能够动态添加支持的语言。
我要提出的解决方案是保存在模型中的一种主要语言和一个查询翻译并将翻译保存到的字典实体。
我只想听听其他做过这件事的人的意见。
您可以创建一个包含三列的表:目标语言代码 http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes,原始字符串,翻译后的字符串。表上的索引将位于前两列,但我不会将此表绑定到具有外键的其他表。您需要为运行的每个查询中需要翻译的每个术语添加一个联接(可能是左联接,以解决缺少的翻译)。然而,这将使您的所有查询变得非常复杂,并且还可能会降低性能。
您需要注意的另一件事是实际翻译术语并维护最新的翻译表。直接针对数据库执行此操作非常不方便,并且通常由非技术人员完成。
通常在本地化应用程序时,您会使用类似的东西gettext http://www.gnu.org/software/gettext/。这套工具背后的想法是解析源代码以提取字符串进行翻译,然后从中创建翻译文件。由于该套件已经存在很长时间了,因此有许多基于它的不同实用程序可以帮助完成翻译任务,其中之一是Poedit http://www.poedit.net/,一个不错的 GUI 编辑器,用于将字符串翻译成不同的语言。当术语以 gettext 可以解析的格式出现在数据库中时,生成唯一的术语列表可能会更简单,并在应用程序代码中进行翻译。这样,您就可以使用相同的技术来转换应用程序中的硬编码字符串和数据库值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)