2013-07-16 2 views
0

Я пишу webapp на немецком языке, поэтому все кнопки, текст, всплывающие подсказки и т. Д. На немецком языке. Но я хочу использовать какой-то файл шаблона для webapp, чтобы я мог быстро перейти на другой язык, если это необходимо. Я думал о текстовом файле, что я explode с "\n" и загружаю в sessionvariable, чтобы всегда иметь весь текст, который потребуется пользователю в его сеансе. Другой подход был бы разобрать такой файл есть документ XML, как это:Шаблоны разных языков в PHP webapp

<?xml version="1.0"?> 
<phrase> 
    <placeholder></placeholder> 
    <value></value> 
</phrase> 

где каждое поле имеет это собственное имя/значение, которое представляет собой textsnippet или кнопку или что-то на сайте, а затем бросил его в объект кэширует его для всех. Я думаю, что второй подход лучше всего подходит для работы с несколькими языками для webapp. Кто-нибудь, может быть, некоторые указатели, что я мог бы сделать еще лучше, или просто опубликовать, как вы делали это в прошлом, для того, чтобы делать банальные веб-страницы/webapps.

+1

см. Компонент перевода symfony https://github.com/symfony/Translation – mpm

+0

То, что я обычно видел и использовал, это большие файлы определения на языке, где слова и фразы заданы как константы и правильное определение файл включается в зависимости от выбора языка. – DevlshOne

+0

Взгляните на Smarty: PHP Template Engine http://www.smarty.net/ – bansi

ответ

1

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

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

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

1

Взгляните на GNU Gettext, что очень удобно для многоязыковой поддержки.

Основная идея заключается в том, что вы просто обернуть ваши слова или фразы в функцию, как

echo _g('Hello'); 

так что вы не имеете каких-либо изменений двигателя. Вам нужно будет добавить файлы переводов для каждого используемого вами языка.

0

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

Относительно архитектуры: ни одно решение не масштабируется, чтобы описать обширный словарный запас очень хорошо - хотя для одной или двух страниц этого будет достаточно. Альтернативный подход к управлению базами данных переводов (например, gettext), которые могут быть чрезмерными, и работает менее оптимально с небольшим количеством страниц, но важная производительность не значительно ухудшается при использовании больших/нескольких словарей. Компромиссным решением может быть наличие набора данных для каждого URL/языка (который может быть извлечен из консолидированной базы данных).

Если бы это был я, я бы не использовал любой метод, который вы предлагали для хранения данных: разбор XML создает служебные данные sginficant для каждого запроса страницы: использование \ n в качестве разделителя исключает использование \ n в переводе. Использование сериализованного массива PHP представляется наименее дорогостоящим решением.

Смежные вопросы