Локализованные строки базы данных - PullRequest
1 голос
/ 27 октября 2009

У меня есть небольшое приложение 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 ]

1 голос
/ 28 декабря 2010

Вам также следует ознакомиться со статьей в блоге Грэма Роше (он возглавляет отдел разработки Grails в SpringSource). В статье объясняется, как перемещать стандартные файлы свойств статического перевода Grails i18n в базу данных. Это также включает поддержку кэширования.

1 голос
/ 27 октября 2009

Ваш 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...