Задача: реализовать перевод интерфейса средствами PHP.

Алгоритм:

  1. Инициируем сессию;
  2. Определяем в массиве ряд языков;
  3. Задаём язык по-умолчанию;
  4. Проверяем выбран ли юзером какой-то иной вариант перевода и есть ли он в массиве определенных нами ранее языков;
  5. Если выбран, то подключаем файл с переводом содержащий обычный ассоциативный массив
  6. 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

Ссылки которые будут передавать параметры:

<?php echo $lang['select_language']; ?>: 
<a href="?language=ru" title="<?php echo $lang[lang_title_ru]; ?>">Ru</a> 
<a href="?language=en" title="<?php echo $lang[lang_title_en]; ?>">En</a> 
<a href="?language=de" title="<?php echo $lang[lang_title_de]; ?>">De</a>

Переводы поместим в папку languages с именами languages/ru.php, languages/en.php и languages/de.php соответственно.
Содержимое каждого файла будет выглядеть таким образом:
ru.php

<?php

$lang = array (
    'select_language' => "Ваш язык",
    'lang_title_ru' => "Русский язык",
    'lang_title_en' => "Английский",
    'lang_title_de' => "Немецкий"
);

?>

en.php

<?php

$lang = array (
    'select_language' => "Your language",
    'lang_title_ru' => "Russian",
    'lang_title_en' => "English",
    'lang_title_de' => "German"
);

?>

de.php

<?php

$lang = array (
    'select_language' => "Sprache",
    'lang_title_ru' => "Russisch",
    'lang_title_en' => "Englisch",
    'lang_title_de' => "Deutsch"
);

?>

Рабочий пример на GIT.


Выразить благодарность

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

Так же, Вы можете перевести любую сумму, которую посчитаете нужной на наш счёт, что сильно мотивирует к написанию новых полезных статей.

Комментарии: