Задача проектирования многоязычного стола - PullRequest
0 голосов
/ 19 января 2011

У меня проблема с реализацией этого базового многоязыкового дизайна.

Содержимое таблицы

content_id bigint(20) NOT NULL,  
lang_id int(5) NOT NULL,   
word varchar (500) NOT NULL,  
created datatime,  

Теперь проблема заключается в реализации этого.Я предполагаю, что в приложении я объявляю каждое слово на странице с помощью content_id, например 1,2,3,4,5 ... где 1 = "Hello" 2 = "Welcome to xxxxx" и т. Д. Верно?Итак, проблема в том, что я даю «Hello» = 1 в коде.Итак, в таблице это как 1, 23 (для английского), Hello.

Но теперь, если у меня есть сеанс испанского, как я найду «Hello» в таблице?Поскольку я жестко закодировал 1 в коде как «Привет», поэтому система всегда будет искать это и находить текст на английском языке.Единственный обходной путь, который я вижу, - это иметь отдельные таблицы для каждого языка?

1 Ответ

1 голос
/ 19 января 2011

Вам нужно сделать lang_id и content_id составным первичным ключом. Вы получите данные, которые выглядят так:

1         Hello            1
1         Hola             2
2         Thanks           1
2         Gracias          2
2         Danke            3

Возможно, вы даже захотите разбить перевод на английский язык на отдельную таблицу, чтобы вам, как разработчику, было легче (поскольку вы говорите по-английски) ... тогда вы знаете, что WordId 1, канонически, "Hello". Внешний ключ к языковой таблице, очевидно. Если вы сделаете это, вам может понадобиться суррогатный ключ для первичного ключа ... который упрощает обновления.

...