@s_katala

Как сделать сайт на нескольких языках?

Доброго времени суток.
Подскажите, как реализовать мультиязычность на сайте php
есть папка lang
в ней создал файлы ru.php и en.php
в них прописал
<?php 
$LANG = array(
  'hello' => "Всем привет",
?>

и
<?php 
$LANG = array(
  'hello' => "Hello",
?>


Как теперь сделать переключение на разные версии, а также как вставить определенную фразу в php в нужно месте.
Заранее всем ОГРОМНОЕ спасибо
  • Вопрос задан
  • 592 просмотра
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Не используем хранение установок (язык, город, настройки шаблона и т.д.) в браузере клиента, если это явно не нужно.
2. Прописываем в конфиге:
//////////Languages settings///////////
define ('HOMELANG','ru');
define ('AVAILABLE_LANGS','ru|en');
define ('DEFAULTLANG','ru'); //if no autodetect
define ('DB_HOMELANG_AUTOSWITCH',true);

3. Определяем:
/*
domain.com/ru/....
domain.com/en/...
берём "ru", "en" и т.д.
*/
$lng=explode(WWWROOTNOLANG,URI_LEFT);
$lng=explode('/',$lng[1],2);
$lng=$lng[0];

/*Проверяем: Есть ли у нас перевод для запрошенного языка?*/
if ($_SESSION['lang']!=$lng && $lng!='' && (strpos(AVAILABLE_LANGS,$lng)!==false)) {
       $_SESSION['lang']=$lng;
} else $lng=HOMELANG;

/*
...здесь обработчик GET, для линков переключения языка..
*/

/*
Задан ли язык в сессии? Если нет - берём предпочтения из браузера клиента.
*/
if (!isset($_SESSION['lang']) || $_SESSION['lang']=='') {
     $lng=$_SERVER['HTTP_ACCEPT_LANGUAGE'];

     $lng=explode(':',$lng);
     $lng=explode(',',$lng[0]);

     $lng=explode('-',$lng[0]);
     $lng=mb_strtolower($lng[0]);

     if ($lng=='' || $lng!='' && strpos(AVAILABLE_LANGS,$lng)===false) {
          if (@strpos(AVAILABLE_LANGS,DEFAULTLANG)!==false) $lng=DEFAULTLANG;
          else $lng=HOMELANG;
     }

     $_SESSION['lang']=$lng;
} 

define('LANG',$_SESSION['lang']);


4. Создаём функцию, чтобы выводить строки:
function lang($s){
 global $lang;
 if (isset($lang[$s])) return $lang[$s];
 else return $s;
}


5. Вызов в коде: echo lang('hello'); или в шаблоне: <?=lang('hello')?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы