Обычно я связываю строки с ключевыми словами, которые их описывают, а затем сохраняет их в таблице базы данных со структурой id int, id varchar(16), language char(2), string varchar
. Затем я создаю функцию обертки PHP для извлечения каждой строки в зависимости от текущего языка посетителя.
Мне сказали (и читали где-то, я думаю), чтобы использовать встроенные методы PHP для обработки интернационализации. Но я не нашел действительно «убедительной» информации о том, почему она должна быть более подходящей, чем моя база данных.
Каков наиболее подходящий метод обработки строк интернационализированных веб-сайтов и почему? есть ли тот, который я всегда должен предпочесть для его лучшей производительности? Если есть один с лучшей производительностью, я переключусь на его использование.
Это зависит от ваших целей. Если вам нужны ваши переводы, которые будут обновляться в режиме онлайн пользователями веб-сайтов, то ваш подход к базе данных в порядке. Однако, если переводы должны предоставляться профессиональными переводчиками, тогда лучше отделить перевод с веб-сайта. Использование чего-то типа gettext – лучшая идея в этом случае – вы сможете отправлять файлы .po для перевода, а затем интегрировать их обратно на свой веб-сайт.
Подумайте о целом процессе, управлении переводчиками, управлении изменениями и т. Д.
Как правило, Gettext обычно зависит от настроек локального уровня proccess, и они зависят от установленных в системе локалей. Для веб-приложений рассмотрите возможность использования собственной реализации базы данных наряду с некоторыми уже упомянутыми методами кэширования.
Существует несколько способов кожи кошки. Я думаю, вам дали этот совет, потому что PHP использует настройки клиента для получения языка по умолчанию (хотя, вероятно, вы используете аналогичный метод). В любом случае необходимо сохранить несколько строк. Если вы предпочитаете db сохранять эти строки, то это работает. Если вы не видите каких-либо проблем с производительностью, то идите с ним. Не нужно менять то, с чем вам удобно.