Страницы

Поиск по вопросам

суббота, 30 ноября 2019 г.

Многоязычность Интернет страницы/сайта

#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();. пример : '; ?> Сразу извиняюсь за возможные ошибки, т.к. пишу без возможности проверить.

Комментариев нет:

Отправить комментарий