PHP – как перевести веб-сайт на несколько языков?

У меня есть веб-сайт, который в настоящее время находится на английском языке; Я хочу иметь возможность переключаться на другой язык, когда пользователь нажимает на другой язык (на сайте есть небольшие значки флагов страны). То, как я сейчас пытаюсь, это массивы, например:

$english = array('index', array('h1' => 'this is some h1 text', 'h2' => 'this is some h2 text')); $japanese = array('index', array('h1' => '世界交換への歓迎', 'h2' => 世界交換への')); print $english[index][h1]; print $japanese[index][h2]; 

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

Solutions Collecting From Web of "PHP – как перевести веб-сайт на несколько языков?"

Учитывая, что вы ищете полную поддержку i18n, которая в конечном итоге приведет к поддержке l10n, я бы предложил написать вашу страницу в фреймворке, который поддерживает эти вещи из коробки.

Лично я только делал переводы с помощью системы Symfony. Они используют комбинацию расширения таблицы i18n в БД для контента и XLIFF-файлы для перевода интерфейса. Он был достаточно прозрачным после его установки, и использование фреймворка позволяет избежать необходимости писать всю эту поддержку вручную.

Я также знаю, что i18n поддерживается в Zend, CakePHP и Code Igniter.

  • Контентная база данных (или файл, я думаю)
  • Запись на страницу для каждого языка
  • Язык, на который ссылается идентификатор
  • Идентификатор, установленный в переменной $ _SESSION
  • Необязательно запоминается в cookie для последующих посещений

Я использовал эту систему с пользовательским CMS @ http://www.grandhall.eu . Это особенно интересно, когда вам нужно принимать во внимание такие вещи, как брошюры и другие загрузки.

Я бы предложил подключить ваш сайт к API Windows Live или API Google Translate. Я не знаю о Google, но API Windows Live кажется очень простым в использовании.

http://msdn.microsoft.com/en-us/magazine/dd569750.aspx

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

Вы можете просто использовать Google translate api:

http://code.google.com/apis/ajaxlanguage/

Он содержит множество документации, и есть примеры того, как использовать его на игровой площадке Google.

http://code.google.com/apis/ajax/playground/

Просто перейдите на ajax> translation