我想在我的grails應用程序中實現i18n功能,但不僅僅是消息(菜單,標籤等)。我正在嘗試爲我的域類的實際文本字段做到這一點。Grails中的CONTENT i18n有什麼好的做法
到目前爲止,我的解決方案包括創建一個域類是這樣的:
class LocalizedText {
String text
Locale locale
static hasMany=[translations : LocalizedText]
String getTranslation(String locale) {
def translation = this.translations.find(locale:locale)
if (translation != null) {
return translation
} else {
return this
}
}
}
然後,例如我會有這個領域類有一個翻譯領域:
class News {
LocalizedText contents
// [...]
}
然後,在我的控制器上,我檢查lang參數並選擇一個翻譯(如果存在),或者如果沒有翻譯可用於給定語言環境,則選擇默認語言。 例如:
class NewsController {
def list = {
def newsContents = []
News.list().each {
newsContents << [contents : it.contents.getTranslation(params.lang)]
}
[news : newsContents]
}
}
很抱歉,如果有錯誤,但是這是我的想法編碼從我的頭在Web表單:-)
我相信有更簡潔的解決方案在那裏,所以我只是想讓你讓我開始了這個複雜的話題。
謝謝!
令人驚歎!謝謝 ! – Philippe
它與Grails 3兼容嗎? – user666
恐怕我不知道答案,這是2011年,可能在Grails 1.x. – wwwclaes