Регистрация
DANFA Сближает людей!

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


Если Ваши пользователи/читатели из разных стран и естественно говорят они и читают на разных языках, значит у Вас есть на сайте возможность переключиться на другой язык. Если такой возможности нет, но Вы хотите её внедрить, тогда предлогаю Вам свой вариант создания языкового переключателя, говоря другими словами сделать свой сайт мультиязычным.

И так для начала в корне сайта создаем папку 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
Написал(а)
Введите символы с картинки:
Reload Image
Type in the verification code above