Интернационализация на уровне базы данных - PullRequest
4 голосов
/ 16 ноября 2009

Может ли кто-нибудь указать мне на некоторые закономерности, связанные с интернационализацией в задачах уровня базы данных?

Простейшим способом было бы добавить текстовый столбец для каждого языка для каждого текстового столбца, но это как-то вонючий - я действительно хочу иметь возможность динамически добавлять поддерживаемые языки.

Решение, к которому я прихожу, - это один основной язык, который сохраняется в модели, и объект словаря, к которому запрашиваются переводы и сохраненные переводы.

Все, что я хочу, это услышать от других людей, которые сделали это.

1 Ответ

1 голос
/ 16 ноября 2009

Вы можете создать таблицу с тремя столбцами: код целевого языка , исходная строка, переведенная строка. Индекс в таблице будет по первым двум столбцам, но я не буду связывать эту таблицу с другими таблицами с внешними ключами. Вам нужно будет добавить объединение (возможно, левое объединение для учета отсутствующих переводов) для каждого из терминов, которые необходимо перевести в каждом выполняемом запросе. Однако это сделает все ваши запросы очень проблематичными и, возможно, также снизит производительность.

Еще одна вещь, о которой вам нужно знать, - это на самом деле перевод терминов и ведение обновленной таблицы перевода. Это очень неудобно делать напрямую с базой данных и часто выполняется нетехническими людьми.

Обычно при локализации приложения вы используете что-то вроде gettext . Идея этого набора инструментов заключается в том, что он может анализировать исходный код, извлекать строки для перевода и затем создавать файлы перевода из них. Поскольку этот пакет существует уже давно, на его основе существует множество различных утилит, которые помогают с задачей перевода, одной из которых является Poedit , хороший графический редактор для перевода строк на разные языки. , Может быть проще сгенерировать уникальный список терминов, поскольку они появляются в базе данных в формате, который может проанализировать gettext, и выполнить перевод в коде приложения. Таким образом, вы сможете выполнять перевод жестко закодированных строк в приложении и значениях базы данных, используя одну и ту же технику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...