KOTOFF.NET
  • Главная
  • Пользователи
  • Контакты
  • Статистика
  • Правила
  • О нас
  • Вход / Регистрация

Как организовать мультиязычность на сайте PHP?

Статьи / PHP

  1. Локализация файлов: Создайте файлы с текстами на каждом языке, который вы хотите поддерживать на своем сайте. Например, вы можете создать отдельные файлы для английского, испанского, французского и других языков. Каждый файл будет содержать соответствующие тексты на определенном языке.
  2. Использование переменных: Создайте переменные, которые будут хранить значения текстов для каждого языка. Например, $welcome_message = array("en" => "Welcome!", "es" => "¡Bienvenido!", "fr" => "Bienvenue!").
  3. Получение текущего языка: В зависимости от предпочтений пользователя или параметров URL, определите текущий язык. Например, вы можете использовать функцию PHP для получения языка браузера пользователя.
  4. Отображение текста на выбранном языке: Используйте выбранный язык для вывода соответствующего текста. На основе полученного текущего языка, вы можете получить соответствующий текст из переменных.
  5. Создание переключателя языка: Предоставьте пользователям возможность выбрать язык на сайте. Создайте переключатель языка, который будет менять текущий язык и обновлять содержимое страницы с учетом выбранного языка.
  6. Запись предпочтений пользователя: Если пользователь выбирает язык, запишите его предпочтения в сеанс или куки. Таким образом, при последующих посещениях, сайт продолжит отображать текст на выбранном языке.
  7. Обновление URL: Если пользователь выбирает язык, обновите URL сайта с учетом выбранного языка. Это поможет пользователю сохранить предпочитаемый язык при переходе между страницами.


Перейдем к практической части

Первое, что нам нужно сделать, это создать пару файлов, которые будут содержать текст для каждого из языков, которые будут поддерживаться веб-сайтом. Для демонстрационных целей я выбрал английский, испанский и немецкий языки. Создайте каталог с именем «каталог». В этом каталоге создайте 3 файла: lang.ru.php, lang.en.php и lang.de.php.В наш основной файл (index.php) мы добавим файл (common.php), содержащий фрагмент кода, который получает запрошенный язык. Вот содержимое этих трех языковых файлов:

lang.ru.php


<?php
/*
------------------
Русский язык
------------------
*/

$lang = array();

$lang['PAGE_TITLE'] = 'Название страницы моего сайта';
$lang['HEADER_TITLE'] = 'Заголовок заголовка моего сайта';
$lang['SITE_NAME'] = 'Мой сайт';
$lang['SLOGAN'] = 'Мой слоган здесь';
$lang['HEADING'] = 'Заголовок';

// Меню

$lang['MENU_HOME'] = 'Дом';
$lang['MENU_ABOUT_US'] = 'О нас';
$lang['MENU_OUR_PRODUCTS'] = 'Наши продукты';
$lang['MENU_CONTACT_US'] = 'Свяжитесь с нами';
$lang['MENU_ADVERTISE'] = 'Реклама';
$lang['MENU_SITE_MAP'] = 'Карта сайта';
?>
lang.en.php


<?php
/* 
------------------
Language: English
------------------
*/

$lang = array();

$lang['PAGE_TITLE'] = 'My website page title';
$lang['HEADER_TITLE'] = 'My website header title';
$lang['SITE_NAME'] = 'My Website';
$lang['SLOGAN'] = 'My slogan here';
$lang['HEADING'] = 'Heading';

// Menu

$lang['MENU_HOME'] = 'Home';
$lang['MENU_ABOUT_US'] = 'About Us';
$lang['MENU_OUR_PRODUCTS'] = 'Our products';
$lang['MENU_CONTACT_US'] = 'Contact Us';
$lang['MENU_ADVERTISE'] = 'Advertise';
$lang['MENU_SITE_MAP'] = 'Site Map';
?>
lang.de.php
<?php
/* 
-----------------
Language: German
-----------------
*/

$lang = array();

$lang['PAGE_TITLE'] = 'Meine Webseite Titel';
$lang['HEADER_TITLE'] = 'Meine Website-Header Titel';
$lang['SITE_NAME'] = 'Meine Website';
$lang['SLOGAN'] = 'Mein Slogan hier';
$lang['HEADING'] = 'Position';

// Menu

$lang['MENU_HOME'] = 'Heim';
$lang['MENU_ABOUT_US'] = 'Über uns';
$lang['MENU_OUR_PRODUCTS'] = 'Unsere Produkte';
$lang['MENU_CONTACT_US'] = 'Kontaktieren Sie uns';
$lang['MENU_ADVERTISE'] = 'Werben';
$lang['MENU_SITE_MAP'] = 'Site Karte';
?>


В каждом файле определенные константы имеют одно и то же имя, но значения разные. Значения констант мы выведем внутри файла index.php. Поэтому мы будем видеть другой текст каждый раз, когда будем вызывать другой языковой файл.


Определите правильный язык

Давайте проанализируем файл common.php :

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];

// регистрируем сеанс и устанавливаем cookie 
$_SESSION['lang'] = $lang;

setcookie('lang', $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en';
}

switch ($lang) {
  case 'ru':
  $lang_file = 'lang.ru.php';
  break;

  case 'de':
  $lang_file = 'lang.de.php';
  break;

  case 'en':
  $lang_file = 'lang.en.php';
  break;

  default:
  $lang_file = 'lang.ru.php';

}

include_once 'languages/'.$lang_file;
?>


После того, как мы определили значение $lang, мы используем switch(), чтобы сравнить его значение с некоторыми другими значениями и выполнить другой фрагмент кода в зависимости от того, какому значению оно соответствует. После определения значения $lang_file скрипт включит необходимый языковой файл. Как видите, я использовал сеансы для регистрации значения $lang. Таким образом, пользователи могут перемещаться по всему сайту и видеть контент на выбранном языке ( не обязательно передавать lang=[(ru, en, de)] в каждом URL). Кроме того, я использовал файлы cookie для хранения выбранного языка на компьютере пользователя в течение 30 дней. Когда посетитель вернется, он увидит сайт на том языке, который он ранее выбрал.


Что делать, если запрошен язык веб-сайта?

На странице выбора языка осталось добавить лишль ссылки с GET параметром нужного нам языка index.php?lang=[ru, en, de]. Чтобы увидеть сайт на немецком языке, мы будем использовать ссылку, которая ссылается на index.php?lang=de

Наконец, значения констант должны быть выведены на страницу. Примеры:

Заголовок страницы:

<title><?php echo $lang['PAGE_TITLE']; ?></title>

для меню заголовка:

<ul> 
      <li><a href="/"><?php echo $lang['MENU_HOME']; ?></a></li> 
      <li><a href="about_us"><?php echo $lang['MENU_ABOUT_US']; ?></a></li> 
	  <li><a href="our_products"><?php echo $lang['MENU_OUR_PRODUCTS']; ?></a></li> 
      <li><a href="contact_us"><?php echo $lang['MENU_CONTACT_US']; ?></a></li> 
      <li><a href="advertise"><?php echo $lang['MENU_ADVERTISE']; ?></a></li>	 
      <li><a href="sitemap"><?php echo $lang['MENU_SITE_MAP']; ?></a></li> 
    </ul>



  • rgr
  • 12.12.2023
  • 1 157
  • 0
Создаём рулетку с разной вероятностью выпадения призов на PHP
Создаём рулетку с разной вероятностью выпадения призов на PHP
3-07-2022, 15:17, PHP
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
19-03-2019, 17:23, Статьи / PHP
Форматы вывода дат относительно текущего времени
Форматы вывода дат относительно текущего времени
14-07-2022, 00:16, PHP
Создание динамической картинки со своим текстом и изображением с помощью PHP и использованием Imagick
Создание динамической картинки со своим текстом и изображением с помощью PHP и использованием Imagick
14-01-2021, 15:17, Статьи / PHP
Простой игровой бот для ВК, создаем игру для Вконтакте + исходники! | Часть 1
Простой игровой бот для ВК, создаем игру для Вконтакте + исходники! | Часть 1
19-04-2020, 22:05, PHP
Movie

Нет комментариев. Не желаешь оставить первый комментарий?

Перед публикацией, советую ознакомится с правилами!

{login}

Твой комментарий..

Заказывай!
Разработка ботов на заказ, любой сложности, обращаться:
 VK KOTOFF.net - Сообщество, в личные сообщения или по контактам указанным там 
 mail: [email protected]

Рекламный блок
  • Новости
  • Платная категория
  • Блог
  • Игры
  • Обновления
  • Программы
  • Статьи
    • PHP
    • Python
    • JS
  • Дизайн
    • PSD исходники
  • DLE
    • Шаблоны
    • Модули
    • Хаки
  • Магазин
    • Скрипты
Комментарии
Система комментариев на PHP
Полезная статья
Создание простого Telegram-бота с клавиатурой и inline-кнопками [Часть 2]
Класс, хорошая тема
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
Как отключить вывод результата cron в папку modules/cron в Open Server? Крон запускает несколько
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
Планируете ли вернуться к динамической обложке?
Скрипт для скачивания видео с YouTube на PHP
Уже не работает.
Все комментарии..
Полный список последних комментариев
Лучшие новости
Всего публикаций: 115
Добавлено за сутки: +0
Записей в блоге: 1
Добавлено за сутки: +0
Комментариев: 936
Добавлено за сутки: +0
Пользователей: 4124
Добавлено за сутки: +0
Полная статистика..
Подробная статистика сайта
Loading...

Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter

Полезные ссылки
  • О проекте
  • Наши контакты
  • Администрация
  • Рекламные материалы
  • Идеи и предложения
  • Ответы на вопросы
Информация
  • Условия сделки
  • Способы оплаты
  • Поддержка / F.A.Q
  • Онлайн документация
  • Статистика сайта
  • Список пользователей
Услуги/Работа
  • Разработка ботов ВК
  • Обновление проекта
  • Консультация/поддержка
KOTOFF.net

Copyright © Footer 2019-2023. All right reserved.
KOTOFF.net - Уроки по PHP, SQL, IT новости
Быстрый вход

Используйте социальные сети для быстрой регистрации и авторизации.

Google
ВКонтакте
Яндекс
Mail.ru
Создать аккаунт / Регистрация
Авторизация

Я забыл свой пароль