Рекомендуемый способ хранения строк для многоязычного PHP-приложения - PullRequest
3 голосов
/ 02 октября 2011

Обычно я связываю строки с ключевыми словами, которые их описывают, а затем сохраняю их в таблице базы данных со структурой id int, id varchar(16), language char(2), string varchar. Затем я создаю функцию-оболочку PHP для извлечения каждой строки в зависимости от текущего языка посетителя.

Мне сказали (и я думаю, что где-то читали) использовать встроенные в PHP методы для обработки интернационализации. Но я не нашел действительно «убедительной» информации о том, почему она должна быть более подходящей, чем моя база данных, как это сделать.

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

Ответы [ 3 ]

2 голосов
/ 02 октября 2011

Это зависит от ваших целей. Если вам нужно, чтобы пользователи веб-сайтов обновляли свои переводы в режиме онлайн, тогда ваш подход к базе данных приемлем. Однако, если переводы должны предоставляться профессиональными переводчиками, лучше отделить перевод от веб-сайта. В этом случае лучше использовать что-то вроде gettext - вы сможете отправлять файлы .po для перевода, а затем интегрировать их обратно на свой веб-сайт.

Подумайте обо всем процессе, об управлении переводчиками, управлении изменениями и т. Д.

1 голос
/ 09 октября 2011

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

0 голосов
/ 02 октября 2011

Есть несколько способов снять шкуру с кошки.Я думаю, что вам дали этот совет, потому что PHP использует настройки клиента, чтобы получить язык по умолчанию (хотя, вероятно, вы используете аналогичный метод).В любом случае, несколько строк должны быть сохранены.Если вы предпочитаете БД сохранить эти строки, то это работает.Если вы не видите никаких проблем с производительностью, а затем пойти с этим.Не нужно менять то, что вам удобно.

...