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];

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

4 ответа

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

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

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

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

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

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

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

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

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

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

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

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

Просто перейдите к ajax > перевод

Другие вопросы по тегам