我有一个小的Grails应用程序,它具有以下域:
class Meal {
String name
String description
String allergyNote
}
出于本地化目的,三个字符串现在应该以多种语言提供。例如,虽然英语用户会看到name =“Steak”,但西班牙语用户应该在输出中看到name =“Filete”。我正在考虑做以下事情:
class Language {
String isoCode
String languageName
}
class TranslatedString {
Language language
String translation
}
但是我不知道如何将Meals与TranslatedStrings链接,因为它用于三个成员,我也想将它用于其他类(不仅仅是Meal)(或者我需要分离表) ,即MealNameTranslated,MealDescriptionTranslated等表?)。我知道这可能是一个愚蠢的问题,但我是初学者并且无法弄明白: - (
答案 0 :(得分:1)
您的TranslatedString
课程不完整,因为无法知道它是什么。您需要在此处再添加一个实体,为字符串提供某种标识符:
// object/record identity is used as key
class StringKey {
String keyName // purely descriptive, not actually used at runtime
}
class TranslatedString {
// the following 2 form a primary key
StringKey key
Language language
String translation
}
class Meal {
StringKey name
StringKey description
StringKey allergyNote
}
然后,您可以在translation
和key
的情况下查找language
。
答案 1 :(得分:1)
您还应该查看article on Graeme Rocher's blog(他是SpringSource的Grails开发负责人)本文介绍了如何将标准静态Grails i18n转换属性文件移动到数据库中。它还包括缓存支持。