Перевести строки базы данных - PullRequest
5 голосов
/ 14 июня 2011

У меня есть приложение, написанное для рынка Великобритании, которое в настоящее время поддерживает только английский (Великобритания), и клиент хочет развернуть часть приложения на сайт за пределами Великобритании и синхронизировать данные обратно в штаб-квартиру Великобритании.

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

EG Вот таблица на основе HQ

tblFault
ID ; Description
1 ; Not Functional
2 ; Build Fault
3 ; Leak
4 ; Aesthetics
5 ; Testing

Если бы я перевел данные на не британский язык, я мог бы просто заменить описания, но это вызвало бы некоторые проблемы, если данные не синхронизированы?

Должен ли я расширить таблицу другим столбцомдля дополнительного языка, а затем изменить выбор, используя местную культуру?

tblFault
ID ; Description-EN ; Descrption-US ; Description-DE etc
1  ; Not Functional ;               ;
2  ; Build Fault    ;               ;
3  ; Leak           ;               ;
4  ; Aesthetics     ;               ;
5  ; Testing        ;               ;

Какой метод вы бы порекомендовали?

Спасибо

Фил

Ответы [ 3 ]

5 голосов
/ 14 июня 2011

Поскольку у вас есть отношение 1: n между сбоями и их описаниями, самое чистое решение состоит в создании подтаблицы:

tblFault
--------

FaultID ; some other fields
      1 ; ...
      2 ; ...
      3 ; ...
      4 ; ...
      5 ; ...


tblFault_Description
--------------------

FaultID ; lang ; Description
      1 ; en   ; Not Functional
      1 ; de   ; Funktioniert nicht
      2 ; en   ; ...
1 голос
/ 14 июня 2011

Это определенно один подход.

Другим подходом, который я использовал в подобных ситуациях раньше, было создание столбца «LanguageId».

Обычно я хотел бы что-то вроде этого:

StringId,  LanguageId,    Description
1            0              Hello
1            1              Hola
1            2              Bon Jour

Это позволяет мне написать запрос, что если строка 35 (например) не имеет языка, который я ищу, я все равно могу предоставить английский. С мыслью, что что-то лучше, чем ничего.

Недостатком этого подхода являются составные первичные ключи и некоторая логика соединения.

0 голосов
/ 14 июня 2011

Нечто подобное, по всей вероятности:

tblFault
ID ; Lang ; Description
1  ; EN   ; Not Functional
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...