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:
Он имеет тонны документации, и есть примеры того, как использовать его на игровой площадке Google Code:
Просто перейдите к ajax > перевод