国際化が必要なGrailsアプリケーションがあります。Grailsを使用すると、ファイルを使用して固定文字列を簡単に翻訳messages.properties
できますが、モデルフィールドを翻訳する方法が見つかりませんでした。
国際化されたモデルを管理して、複数の言語のモデルを管理領域に入力し、ビューで正しいモデルを選択できるようにする方法はありますか?
自分のシステムをロールアップすることもできますが、おそらくこの種の何かがすでに存在していて、私が書くものよりも機能が豊富で、バトルテストが行われています。これはDjangoで私に起こりました。私は国際化のためにカスタムシステム(以下で説明します)を使用しましたが、さまざまなDjangoアプリがすでにこの問題を解決していることがわかりました。
この問題を解決する方法の例
私が何を達成しようとしているのかが明確でない場合は、ここでDjangoで使用した実装について説明します。
私は2つの基本的な抽象モデルを持っていましI18NModel
たTranslationModel
。アプリケーションで使用される実際のモデルは前者から継承され、後者からの翻訳です。継承では、翻訳されていないモデルへの外部キーを定義し、関連する言語でフィールドを定義する必要がありました。
次に、元のモデルtranslate
は、言語を取得してプロキシモデルを返すメソッドを継承しました。このプロキシには、元の翻訳されていないモデルと、正しいアイテムと言語に関連付けられた翻訳されたモデルの両方への参照がありました。
プロキシのフィールドを要求するたびに、変換されたモデルで定義されているかどうかを調べようとします。もしそうなら、それはそれを返します、さもなければ、それはデフォルトとして未翻訳モデルのフィールドを与えるでしょう。
現在の言語を見つける方法でそれをフックすると、結果として、テンプレートで次のように使用できるものが得られました。
<h1>{{ article.translate.title }}</h1>
編集者が管理領域に翻訳を挿入できるようにします。