Как лучше всего переводить текст внутри базы данных? - PullRequest
2 голосов
/ 04 апреля 2009

У нас проблема здесь.

Нам нужно перевести сайт на несколько языков. Мы уже используем gettext для перевода статического контента. Но нам нужно перевести текстовое содержание на несколько языков.

Пользовательский интерфейс не проблема.

Мы нашли 2 способа перевести текст. 1. использовать JSON внутри нашего ввода текста Почему это решение плохо. Каждый ввод текста должен быть больше, потому что мы не можем угадать реальный размер атрибута.

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

  2. Наконец, лучшее решение, с которым я пришел, - это создание таблицы перевода. Таблица будет хранить внешний ключ других таблиц. Для каждого перевода мы копируем запись, которую нужно перевести. Внутри таблицы перевода есть 4 поля: имя_модели (первичное), reference_id (первичное), translation_id (первичное), локаль (первичное). Это решение делает невозможным многократный перевод для одной и той же модели на одном языке.

  3. И последнее, но не менее важное: мы могли бы использовать что-то вроде предложенного кем-то ... текст базы данных. У нас есть таблица, которая содержит строки и только строку (ключ, текст, локаль), поэтому мы можем искать модель, такую ​​же строку, как та, которая используется в модели, а затем использовать вместо нее найденную нами.

Мое мнение таково, что все эти решения взломаны, решение 4, вероятно, выглядит лучше.

Так как я не нашел хорошую документацию, мне бы очень хотелось, чтобы этот вопрос блестел.

1 Ответ

1 голос
/ 04 апреля 2009

Вот как мы работали с несколькими языками (некоторые эксперты смотрели и на эти решения!).

  • У нас есть текстовая таблица в базе данных (textid, key, nl, uk, de, fr)
  • У нас есть иностранные ключи для текстовой таблицы (например, из productnameid)
  • Статический текст, который необходимо перевести на html-страницы, окружен хешами: ## name ##
  • непосредственно перед отправкой html-содержимого с сервера на клиент htmlstream анализируется для преобразования содержимого между хешами.
  • переведенные тексты хранятся в кеше, что делает это решение гибким и по-прежнему быстрым

Это работает для нас, и мы создаем веб-сайты, которые имеют более 100 тыс. Просмотров страниц в час.

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