我有一个需要国际化的Grails应用程序。 Grails可以使用messages.properties
文件轻松翻译固定字符串,但我找不到如何翻译模型字段。
有没有办法管理国际化模型,以便可以在某个管理区域输入多种语言的模型,并在视图中选择正确的模型?
我可以卷起我自己的系统,但也许这种类型的东西已经存在,并且它比我写的更具特色和战斗测试。这在Django中发生在我身上:我使用了一个自定义系统 - 我在下面描述 - 用于国际化,但却发现各种Django应用程序已经解决了这个问题。
如何解决此问题的示例
如果我不清楚我想要实现什么,这里我描述了我在Django上使用的实现。
我有两个基本抽象模型,I18NModel
和TranslationModel
。应用程序中使用的实际模型从前者继承而来自后者的翻译。在继承中,他们需要为未翻译的模型定义外键并定义具有相关语言的字段。
反过来,原始模型继承了一种方法translate
,它采用了一种语言并返回了一个代理模型。此代理既可以引用原始的,未翻译的模型,也可以引用与正确的项目和语言相关联的翻译模型。
每当您在代理上询问某个字段时,它会尝试查找是否在已翻译的模型上定义了该字段。如果是,它将返回,否则它将默认为未翻译模型上的字段。
用一种找到当前语言的方法来挂钩,结果我在模板中可以使用这样的东西:
<h1>{{ article.translate.title }}</h1>
允许编辑者在管理区域中插入翻译。