Как реализовать языковые пакеты в PHP

Я создал 3 языковых пакета для своего сайта: английский, испанский и французский. У меня просто проблемы с их реализацией на основе выбора пользователя. У меня есть следующее выпадающее меню:

<select onchange='document.location.href=this.options[this.selectedIndex].value;'>
  <option>Select</option>
  <option value="?lang=eng">US English</option>
  <option value="?lang=esp">Español</option>
    <option value="?lang=fra">Français</option>
</select>

Как я могу включить языковые файлы в зависимости от того, что выбирает пользователь, я просто не знаю, что указать в качестве условия в операторе if.

Благодарю.

3 ответа

Решение

Сначала сохраните значение, выбранное пользователем в сеансе пользователя. например:

switch($_POST['lang']) {
    case 'en': $_SESSION['lang'] = 'English'; break;
    case 'sp': $_SESSION['lang'] = 'Spanish'; break;
    default:   $_SESSION['lang'] = 'English'; break;
}

При каждом запросе страницы извлекайте языковые файлы из соответствующей языковой папки в соответствии со значением, которое вы сохранили.

Например, вот так будет выглядеть структура файлов:

  • английский
    • global.php
    • register.php
  • испанский
    • global.php
    • register.php

Затем, когда вам нужно загрузить текстовый файл, используйте:

function load_text_file($filename) {
    include 'languages/' . $_SESSION['lang'] . '/' . $filename.'php';
    return $txt;    // $txt should be an array
}
//...

$text = array(); $text += load_text_file('Global'); $text += load_text_file('Register');

Когда вы вводите опцию через строку запроса, вы можете получить к ней доступ с помощью

$lang = $_GET['lang']

Для моего шаблона этот кусок кода

$_SESSION['language'] = 'english';

Другие вопросы по тегам