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