Реализуем мультиязычность на PHP
17:33, 19/03/2018
Задача: реализовать перевод интерфейса средствами PHP.
Алгоритм:
- Инициируем сессию;
- Определяем в массиве ряд языков;
- Задаём язык по-умолчанию;
- Проверяем выбран ли юзером какой-то иной вариант перевода и есть ли он в массиве определенных нами ранее языков;
- Если выбран, то подключаем файл с переводом содержащий обычный ассоциативный массив
- Profit!
session_start(); $available_languages = array('ru', 'en', 'de'); // e.g. we set three languages: Russian, English and Deutsch $_SESSION['language'] = 'ru'; // set default language if (isset($_GET['language']) && $_GET['language'] != '') { // Check language existance in array $available_languages if (in_array($_GET['language'], $available_languages)) $_SESSION['language'] = $_GET['language']; // set session if GET['language'] is exist } include_once 'languages/'.$_SESSION['language'].'.php'; // include file with translations for selected language
Ссылки которые будут передавать параметры:
: Ru En De
Переводы поместим в папку languages с именами languages/ru.php
, languages/en.php
и languages/de.php
соответственно.
Содержимое каждого файла будет выглядеть таким образом:
ru.php
$lang = array ( 'select_language' => "Ваш язык", 'lang_title_ru' => "Русский язык", 'lang_title_en' => "Английский", 'lang_title_de' => "Немецкий" );
en.php
$lang = array ( 'select_language' => "Your language", 'lang_title_ru' => "Russian", 'lang_title_en' => "English", 'lang_title_de' => "German" );
de.php
$lang = array ( 'select_language' => "Sprache", 'lang_title_ru' => "Russisch", 'lang_title_en' => "Englisch", 'lang_title_de' => "Deutsch" );
Комментарии