PHP - как перевести сайт на несколько языков? - PullRequest
3 голосов
/ 05 июня 2009

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

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

5 голосов
/ 05 июня 2009

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

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

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

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

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

0 голосов
/ 05 июня 2009

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

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

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

0 голосов
/ 05 июня 2009

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

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

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

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

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

...