Сортировка и i18n в базе данных - PullRequest
0 голосов
/ 03 декабря 2009

В моей базе данных есть следующие данные:

ID   Name    Region
100   Sam     North
101   Dam     South
102   Wesson  East
...
...
...

Теперь регион будет отличаться на разных языках. Я хочу, чтобы сортировка происходила правильно, исходя из отображаемого значения, а не внутреннего значения.

Есть идеи? (И да, сортировка в памяти с использованием Java не возможна!)

Ответы [ 3 ]

1 голос
/ 03 декабря 2009

К сожалению, если вы хотите сделать это в базе данных, вам придется хранить и интернационализированные версии в базе данных (или, по крайней мере, их порядок). Иначе как ядро ​​базы данных может знать, как сортировать?

Вам нужно будет создать таблицу с тремя столбцами: английская версия, код языка и переведенная версия (первичным ключом является английская версия и код языка вместе). Затем присоединитесь к этой таблице в запросе, используя английское слово и код языка, а затем выполните сортировку по интернационализированной версии.

0 голосов
/ 03 декабря 2009

Лучший подход к использованию интернационализации - удалить интернационализацию из вашего приложения и сохранить ее в отдельных базах данных i18n. В вашем приложении вы храните ключ, который можно использовать для доступа к этим отдельным базам данных, обычно это xml или yml.

Как правило, я бы предложил:

  • хранить всю базу данных в одном формате, в одном месте
  • извлекает строки интернационализации из вашего приложения
  • позволяет вашему приложению извлекать строки i18n из вашего i18n из вашей базы данных интернационализации.

Вы можете проверить подход RAILS к i18n. Это просто, чисто и легко в использовании.

0 голосов
/ 03 декабря 2009

Что вы подразумеваете под "Показатель стоимости"? Я так понимаю, вы как-то конвертируете это в другой язык в самой java , и не храните это значение (локализованное, я полагаю) в БД? Если это так, вы как бы облажались. Вы должны поместить эти данные в БД, чтобы иметь возможность сортировать их там.

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