Первое, что нам нужно сделать, это создать пару файлов, которые будут содержать текст для каждого из языков, которые будут поддерживаться веб-сайтом. Для демонстрационных целей я выбрал английский, испанский и немецкий языки. Создайте каталог с именем «каталог». В этом каталоге создайте 3 файла: lang.ru.php, lang.en.php и lang.de.php.В наш основной файл (index.php) мы добавим файл (common.php), содержащий фрагмент кода, который получает запрошенный язык. Вот содержимое этих трех языковых файлов:
<?php
/*
------------------
Русский язык
------------------
*/
$lang = array();
$lang['PAGE_TITLE'] = 'Название страницы моего сайта';
$lang['HEADER_TITLE'] = 'Заголовок заголовка моего сайта';
$lang['SITE_NAME'] = 'Мой сайт';
$lang['SLOGAN'] = 'Мой слоган здесь';
$lang['HEADING'] = 'Заголовок';
// Меню
$lang['MENU_HOME'] = 'Дом';
$lang['MENU_ABOUT_US'] = 'О нас';
$lang['MENU_OUR_PRODUCTS'] = 'Наши продукты';
$lang['MENU_CONTACT_US'] = 'Свяжитесь с нами';
$lang['MENU_ADVERTISE'] = 'Реклама';
$lang['MENU_SITE_MAP'] = 'Карта сайта';
?>
<?php
/*
------------------
Language: English
------------------
*/
$lang = array();
$lang['PAGE_TITLE'] = 'My website page title';
$lang['HEADER_TITLE'] = 'My website header title';
$lang['SITE_NAME'] = 'My Website';
$lang['SLOGAN'] = 'My slogan here';
$lang['HEADING'] = 'Heading';
// Menu
$lang['MENU_HOME'] = 'Home';
$lang['MENU_ABOUT_US'] = 'About Us';
$lang['MENU_OUR_PRODUCTS'] = 'Our products';
$lang['MENU_CONTACT_US'] = 'Contact Us';
$lang['MENU_ADVERTISE'] = 'Advertise';
$lang['MENU_SITE_MAP'] = 'Site Map';
?>
<?php
/*
-----------------
Language: German
-----------------
*/
$lang = array();
$lang['PAGE_TITLE'] = 'Meine Webseite Titel';
$lang['HEADER_TITLE'] = 'Meine Website-Header Titel';
$lang['SITE_NAME'] = 'Meine Website';
$lang['SLOGAN'] = 'Mein Slogan hier';
$lang['HEADING'] = 'Position';
// Menu
$lang['MENU_HOME'] = 'Heim';
$lang['MENU_ABOUT_US'] = 'Über uns';
$lang['MENU_OUR_PRODUCTS'] = 'Unsere Produkte';
$lang['MENU_CONTACT_US'] = 'Kontaktieren Sie uns';
$lang['MENU_ADVERTISE'] = 'Werben';
$lang['MENU_SITE_MAP'] = 'Site Karte';
?>
В каждом файле определенные константы имеют одно и то же имя, но значения разные. Значения констант мы выведем внутри файла index.php. Поэтому мы будем видеть другой текст каждый раз, когда будем вызывать другой языковой файл.
Давайте проанализируем файл common.php :
<?php
session_start();
header('Cache-control: private'); // IE 6 FIX
if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];
// регистрируем сеанс и устанавливаем cookie
$_SESSION['lang'] = $lang;
setcookie('lang', $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en';
}
switch ($lang) {
case 'ru':
$lang_file = 'lang.ru.php';
break;
case 'de':
$lang_file = 'lang.de.php';
break;
case 'en':
$lang_file = 'lang.en.php';
break;
default:
$lang_file = 'lang.ru.php';
}
include_once 'languages/'.$lang_file;
?>
После того, как мы определили значение $lang, мы используем switch(), чтобы сравнить его значение с некоторыми другими значениями и выполнить другой фрагмент кода в зависимости от того, какому значению оно соответствует. После определения значения $lang_file скрипт включит необходимый языковой файл. Как видите, я использовал сеансы для регистрации значения $lang. Таким образом, пользователи могут перемещаться по всему сайту и видеть контент на выбранном языке ( не обязательно передавать lang=[(ru, en, de)] в каждом URL). Кроме того, я использовал файлы cookie для хранения выбранного языка на компьютере пользователя в течение 30 дней. Когда посетитель вернется, он увидит сайт на том языке, который он ранее выбрал.
На странице выбора языка осталось добавить лишль ссылки с GET параметром нужного нам языка index.php?lang=[ru, en, de]. Чтобы увидеть сайт на немецком языке, мы будем использовать ссылку, которая ссылается на index.php?lang=de
Наконец, значения констант должны быть выведены на страницу. Примеры:
Заголовок страницы:
<title><?php echo $lang['PAGE_TITLE']; ?></title>
для меню заголовка:
<ul>
<li><a href="/"><?php echo $lang['MENU_HOME']; ?></a></li>
<li><a href="about_us"><?php echo $lang['MENU_ABOUT_US']; ?></a></li>
<li><a href="our_products"><?php echo $lang['MENU_OUR_PRODUCTS']; ?></a></li>
<li><a href="contact_us"><?php echo $lang['MENU_CONTACT_US']; ?></a></li>
<li><a href="advertise"><?php echo $lang['MENU_ADVERTISE']; ?></a></li>
<li><a href="sitemap"><?php echo $lang['MENU_SITE_MAP']; ?></a></li>
</ul>
Перед публикацией, советую ознакомится с правилами!
Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter