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