У меня возникла проблема с реализацией этого базового многоканального дизайна.Проблема с многоязычным дизайном таблиц
содержание Таблица
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 = «Привет» 2 = «Добро пожаловать в xxxxx» и т. Д. Право? Поэтому проблема в том, что я даю «Hello» = 1 в коде. Итак, в таблице это так: 1, 23 (для английского), Привет.
Но теперь, если у меня есть испанская сессия, как я найду «Привет» в таблице? Потому что я жестко закодировал 1 в коде, чтобы быть «Hello», поэтому система всегда будет искать это и найти текст на английском языке. Единственная работа, которую я вижу, - это иметь отдельные таблицы на один язык?
Я бы рекомендовал НЕ использовать один язык в качестве вашего «стандартного» языка, который не переведен, но вместо этого использовать идентификаторы (они не должны быть численными!), Которые сопоставляют (вместе с идентификатором языка) запись на языке. Например, ваш Hello, который отображается на главной странице, может иметь идентификатор «homepage.greeting». – Paul
Composite PK для базы данных, но мне все еще нужно ссылаться на него в коде, и насколько я знаю, мы не можем сделать это в коде? Я должен все еще объявить Hello = 1 в коде, если вы не говорите мне, что я могу объявить Hello = (1,1)? И эта схема работает для этой утилиты: «Если языковой перевод не найден, он по умолчанию использует английский для этого слова« – JonnyK
Ну, дайте ему любое каноническое имя, которое вы хотите - моя точка зрения заключается в том, что вместо того, чтобы запрашивать значение для английского языка нужного вам значения языка, вы могли бы присоединиться к таблице, содержащей идентификатор, дружественный разработчику. –