本地化数据库字符串

时间:2009-10-27 18:49:59

标签: grails

我有一个小的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等表?)。我知道这可能是一个愚蠢的问题,但我是初学者并且无法弄明白: - (

2 个答案:

答案 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
}

然后,您可以在translationkey的情况下查找language

答案 1 :(得分:1)

您还应该查看article on Graeme Rocher's blog(他是SpringSource的Grails开发负责人)本文介绍了如何将标准静态Grails i18n转换属性文件移动到数据库中。它还包括缓存支持。