Это зависит от того, что вам нужно. Если вам нужны отдельные столбцы для хранения в переводах имен БД, я рекомендую использовать name_de
, name_en
..., но это всего лишь мои предпочтения, легко понять и понять назначение столбца.
Но подумайте о фильтрации (поиске). Если вы предпочитаете этот метод с дополнительными столбцами в той же таблице, вам нужно будет добавить какой-либо переключатель в запросе (хранимой процедуре) для поиска имени по определенному языку - для английского вам нужно искать в name_en
, в немецком - name_de
. Поэтому я мог бы порекомендовать решение с отдельной таблицей для локализации со столбцами id
, [master_table]_id
, language_code
и text
(или имя).
Например, есть таблица item
со столбцами id
и name
.
Я бы создал таблицу item_localization
со столбцами id
, item_id
, language_code
и text
.
Таким образом, для строки (1, «имя») в таблице item
в item_localization
будет (1, 1, «en», «name-en»), (1, 2, «de», «name-de» «).
Я предпочитаю хранить в основной таблице английское имя, а также дублировать его в таблице локализации. В этом случае легко выполнить фильтрацию по локализованному имени, например,
select item.*
from item
join item_localization on item_localization.item_id = item.id
where item_localization.language_code = "de" and item_localization.text like "%some_text%"
Но это только мой опыт и мысли.