Реализуем мультиязычность на PHP


17:33, 19/03/2018

Задача: реализовать перевод интерфейса средствами 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

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

: 
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"
);


Комментарии