Grails 本地化数据库字符串

Grails 本地化数据库字符串,grails,Grails,我有一个小型Grails应用程序,它具有以下域: class Meal { String name String description String allergyNote } 为了本地化的目的,这三个字符串现在应该有多种语言。例如,英语用户将看到name=“Steak”,而西班牙语用户则应在输出中看到name=“Filete”。我想做以下几件事: class Language { String isoCode String languageName } class T

我有一个小型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
}

但我不确定如何将膳食与TranslatedString链接,因为它用于三个成员,我还想将其用于其他类(不仅仅是膳食)(或者我是否需要单独的表,即MealNameTranslated、MealDescriptionTranslated等表?)。我知道这可能是一个愚蠢的问题,但我是一个初学者,还没有弄明白这一点:-(

您的
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
}

然后,您可以查看
翻译
给定
语言
您还应该查看(他是SpringSource的Grails开发负责人)这篇文章解释了如何将标准静态Grails i18n翻译属性文件移动到数据库中。它还包括缓存支持。

感谢您对我的答案的解释。我已经删除了它,因为它不是您想要的。您可能希望将您在评论中的示例放入问题itse中如果要帮助澄清。谢谢,已经添加了示例(牛排->文件)谢谢,这是有意义的。至于我问题的另一部分:如果我删除了膳食,理想情况下翻译的字符串也应该删除。但是如果我将StringKey/TranslatedString用于除膳食之外的其他对象,sime“static belongsTo”(可能)将不起作用。。。