#apache #htaccess #php
Стало интересно как можно реализовать многоязычность Интернет страницы/сайта, "погуглил"
некоторое время, но на толковое разъяснение что да как не наткнулся... Не могли бы
Вы товарищи ткнуть носом в строну куда надо копать?
Ответы
Ответ 1
Нужно сделать файл, содержащий объявление констант, в которых будут строки для вывода
в разных местах сайта.
Например (приводил уже где то)...
Главный файл:
Файл русского языка:
Файл английского языка:
Файл шаблона:
=LANG_TITLE?>
Просто нужно поместить в $language имя файла языка, для удобства без расширения.
Следует еще предусмотреть вывод страницы на дефолтном языке, если в $language ничего
не присвоено. Вот, такова идея. Если что не ясно, пишите! Удачного дня :)
Ответ 2
Процесс создания мультиязычности обычно делят на две части: интернационализацию и
локализацию. Оба этих процесса хорошо описаны в wikipedia.
Наиболее популярным и удобным инструментом для интернационализации, как сайтов, так
и прикладных программ является gettext. Для PHP так же есть соответствующее расширение.
Основная идея этой библиотеки заключается в том, что для обозначения переводимой
используется сама оригинальная строка, а не какие-либо специальные идентификаторы.
При этом, если перевод данной строки отсутствует, то просто выводится оригинальная
строка. Например, тот же шаблон ответа выше будет выглядеть так:
= _('Main page') ?>
Более подробно про gettext и его возможностях можно прочитать в той-же wikipedia.
PS В документации к gettext говорится, что оригинальные строки должны быть на английском,
однако, в последних версиях gettext можно использовать и русские строки, при условии
повсеместного использования utf-8. В этом случае, возможно, будет некоторая путаница
в английской локализации, но это проблема легко решается.
Ответ 3
Хотелось бы дополнить, если использовать базу данных, то в списке страниц сайта,
можно добавить вариант текста на нескольких языках пример таблицы :
id - идентификатор страницы в базе
name - имя на английском как псевдоним
t_ru - название на русском
t_en - название на английском
c_ru - контент на русском
c_en - контент на английском
и при необходимости грузить только нужную колонку, язык давать на выбор изначально,
а сохранять его параметры в cookie, например :
Примерно как то так, способов реализаций очень много, в большинстве случаях можно
обойтись и без базы данных и использовать файлы. Весь смысл создания сайта на разных
языках - это знать нужный для посетителя язык и выводить вариант страницы на этом языке.
А если нужно перевести надписи на кнопках, заголовки и т.д., то можно создать файл
с массивами, и подключать его в начале страницы функцией require, именно ей и именно
вначале, т.к. она не замедляет работу программы, как это делает include();.
пример :
';
?>
Сразу извиняюсь за возможные ошибки, т.к. пишу без возможности проверить.