На многих сайтах вы наверное видите где-то в углу флаги других стран, при нажатии на них сразу меняется язык сайта. Это и есть "многоязычный сайт", это очень удобно если ваш сайт посещают например русские, украинцы, румыны. В данном случае нужно написать сайт который по требованию пользователя менял язык сайт в требуемый. Каждый язык должен иметь свой собственный файл где будет хранится массив языка. Выбранный язык будет запоминаться в сессии и при каждом обращении к сайту язык останется без изменений.
Скачать сразу архив с примером
Пароль: live-code.ru
Структура сайта:
lang / lang.ru.php
lang / lang.ua.php
lang / lang.ro.php
index.php
Для начало, мы создадим языковые файлы для каждого языка и сохраним их в папку lang
- Русский языковый файл (lang / lang.ru.php)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php /** ---------------------- ** Русский языковый файл ** Источник: live-code.ru ** ----------------------*/ $Lang = array( "title" => "Мой многоязычный сайт на PHP", "header_title" => "Многоязычный сайт", "site_slogan" => "Сайт программиста", // Меню "index_menu" => "Главная страница", "contact_menu" => "Контакты", "site_map" => "Карта сайта", "advertisement"=> "Реклама", ); ?> |
- Украинский языковый файл (lang / lang.ua.php)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php /** ---------------------- ** Украинский языковый файл ** Источник: live-code.ru ** ----------------------*/ $Lang = array( "title" => "Мій багатомовний сайт на PHP", "header_title" => "Багатомовний сайт", "site_slogan" => "Сайт програміста", // Меню "index_menu" => "Головна сторінка", "contact_menu" => "Контакти", "site_map" => "Карта сайту", "advertisement"=> "Реклама", ); ?> |
- Румынский языковый файл (lang / lang.ro.php)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php /** ---------------------- ** Румынский языковый файл ** Источник: live-code.ru ** ----------------------*/ $Lang = array( "title" => "Site-ul meu multilingvist pe PHP", "header_title" => "Site-ul poliglot", "site_slogan" => "Site-ul programistului", // Меню "index_menu" => "Pagina principala", "contact_menu" => "Contacte", "site_map" => "Mapa Site-ului", "advertisement"=> "Reclama", ); ?> |
Теперь создаем главный файл index.php который будет вызывать языковый файл в зависимости от выбора пользователя.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<?php @session_start(); // Массив доступных для выбора языков $LangArray = array("ru", "ua", "ro"); // Язык по умолчанию $DefaultLang = "ru"; // Если язык уже выбран и сохранен в сессии отправляем его скрипту if(@$_SESSION['NowLang']) { // Проверяем если выбранный язык доступен для выбора if(!in_array($_SESSION['NowLang'], $LangArray)) { // Неправильный выбор, возвращаем язык по умолчанию $_SESSION['NowLang'] = $DefaultLang; } } else { $_SESSION['NowLang'] = $DefaultLang; } // Выбранный язык отправлен скрипту через GET $language = addslashes($_GET['lang']); if($language) { // Проверяем если выбранный язык доступен для выбора if(!in_array($language, $LangArray)) { // Неправильный выбор, возвращаем язык по умолчанию $_SESSION['NowLang'] = $DefaultLang; } else { // Сохраняем язык в сессии $_SESSION['NowLang'] = $language; } } // Открываем текущий язык $CurentLang = addslashes($_SESSION['NowLang']); include_once ("lang/lang.".$CurentLang.".php"); |
Вот скрин сайта который у нас получился в конечном итоге:
Теперь когда мы будем переходить по ссылкам
site.com/index.php?lang=ru (Будет русский язык, скрипт загрузит файл lang.ru.php)
и так далее для каждого языка (ru, ua, ro).
Спонсор статьи: английский по скайпу
Вопросы и может быть советы по улучшению скрипта можете оставить в комментариях ниже.