Я пытаюсь внедрить многоязыковую поддержку в серверную часть приложения и пытаюсь найти стратегию для эффективной реализации этого в текущей схеме.
В настоящее время у меня есть несколько таблиц, каждая из которых содержит стандартные английские значения.
Моя идея заключается в том, чтобы в каждой таблице содержались английские значения, включая внешний ключ, который относится к одному «Языку» и нескольким «Языковым значениям» в таблице, содержащей переводы
Так, например,
Таблица-1
Value | Lang_ID
"This is a sentence" | 1
"This is also a sentence" | 2
"Translate this" | 3
Таблица-2
Value | Lang_ID
"This is a sentence from another table" | 4
"This table is different from table-1" | 5
Язык-Table
Lang_ID | Lang_Code | Value
1 | "ZHO" | "这是一句话"
1 | "SPA" | "esta es una frase"
2 | "FRA" | "c'est aussi une phrase"
3 | "SPA" | "traduce esto"
4 | "FRA" | "ceci est une phrase d'un autre tableau"
....
Я думаю, что тогда вам просто нужно будет запросить Language-Table по WHERE Lang_ID =? AND Lang_Code =? чтобы получить перевод для этого конкретного значения.
Мне интересно пару вещей
1) Это хорошая практика?
2) Как создать внешние ключи, которые еще не существуют для нескольких таблиц, и сохранить каждую из них уникальной (чтобы два перевода разных текстовых значений не попадали под один и тот же Lang_ID)