Делаем сайт мультиязычным (PHP + MySQLi)

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Делаем сайт мультиязычным (PHP + MySQLi)

Сообщение Slash » Чт фев 06, 2014 6:29 pm

Доброго времени суток!
Если Ваши пользователи/читатели из разных стран и естественно говорят они и читают на разных языках, значит у Вас есть на сайте возможность переключиться на другой язык. Если такой возможности нет, но Вы хотите её внедрить, тогда предлогаю Вам свой вариант создания языкового переключателя, говоря другими словами сделать свой сайт мультиязычным.
И так для начала в корне сайта создаем папку language, куда поместим два файла ru.php и en.php - эти файлы у нас и будут хранить в себе перевод языка, один язык - один файл. Для создания списка слов/фраз в языковых файлах я использую массив array(), вот так:
Файл ru.php:

Код: Выделить всё

<?php 
$lang 
= array(
    'index'                 => 'Главная страница',       
    
'register'              => 'Регистрация',
    'input'                 => 'Вход', 
    
'blog'                  => 'Блог',   
    
'exit'                  => 'Выход',
);
?>

Файл en.php:

Код: Выделить всё

<?php
$lang 
= array(
    'index'                 => 'Index page',       
    
'register'              => 'Register',
    'input'                 => 'Input',  
    
'blog'                  => 'Blog', 
    
'exit'                  => 'Exit',
);
?>

Теперь заменяем в файлах фразы на переменные такого вида: $lang[blog]; (данная переменная выводит слово Блог на русском, и Blog на английском). Если Ваш сайт имеет шаблоны, то переменные меняем в них на такую конструкцию: <?=$lang[blog]?>.
Теперь давайте дадим Вашим пользователям возможность сменить язык по умолчанию на другой. Информация о том какой язык установил пользователь будет храниться в Базе Данных. Эту опцию, можно установить в личном кабинете пользователя или при регистрации нового пользователя.
Делаем список выбора языка:

Код: Выделить всё

<form method="post" />
 <input type="radio" name="language" value="ru" />Русский<br />
 <input type="radio" name="language" value="en" />Английский<br />
 <input type="submit" name="submit" value="Отправить" />
</
form>

Сам скрипт замены языка:

Код: Выделить всё

if (isset($_POST['submit'])) {
        $language = $_POST['language'];

        $sql = "UPDATE `user` SET `language`=`$language` WHERE `id`='$id'";
}

Затем выполняем запрос в Базу Данных:

Код: Выделить всё

ALTER TABLE `user` ADD COLUMN `language` VARCHAR(32

Название таблицы user - меняете на своё.

Теперь используем язык, который выбрал пользователь, если пользователь не выбирал языка, будем использовать язык по умолчанию, в данном примере язык по умолчанию является русским. Подключать языковой файл будем функцией include():

Код: Выделить всё

if ($language == 'ru') {
    include('language/ru.php');
}
elseif ($language == 'en') {
    include('language/en.php');
}
#Если не один из языков не выбран, выводим язык по умолчанию:
else {
    include('language/ru.php');

Данное условие надо вставлять после запроса в БД, иначе невозможно будет проверить переменную $language.
Вот и всё! Теперь Ваши пользователи могут выбрать один из двух языков. При желании можно добавить больше языков.

Конечно, можно сделать всё это намного проще, но я только учусь... Так, что прошу сильно не ругайте!
Спасибо.
Реклама

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя