Я пытаюсь перевести свой сайт с помощью PHP и сделать так, чтобы он напоминал язык, даже если пользователь перемещается между страницами, а я не могу сделать это так, как я хочу. Я хочу использовать папку «locale».
Основной файл называется index.php, который может содержать что-то вроде этого:
<?php
include "locale/en.php";
echo $locale['test'];
?>
..и en.php находится в папке «locale» рядом с «it.php», «ro.php», «fr.php» и так далее. Файл En.php содержит:
<?php
$locale['test'] = "anything";
?>
Теперь вот проблема … Я знаю термин «сессия» в php, но я не знаю, как заставить этот синтаксис работать в PHP.
session_start();
if user clicks the Italy flag{
translate the site in italian;
}else{
if the user click the France flag{
translate the site in french
}else{...
Я хотел бы, чтобы пользователь перемещался между страницами, чтобы увидеть контент на выбранном им языке. При желании можно сохранить язык, который он выбрал, в файле cookie, чтобы увидеть сайт на том языке, который ему нужен, даже если он возвращается на сайт второй, третий … раз. Спасибо, и извините за мой плохой язык 🙂
Один из способов сделать это:
session_start(); //include this at the top of your page(s)
if(!isset($_SESSION['language'])){
$_SESSION['language'] = 'en'; // set the default language
}
if(isset($_GET['setLanguage'])){
$_SESSION['language'] = $_GET['setLanguage']; //if the user change language
}
$allowedLanguages = array('en','es');
if(in_array($_SESSION['language'],$allowedLanguages)){
include('languages/'.$_SESSION['language'].'.php');
}
Тогда языковые файлы будут выглядеть так:
В файле En.php:
$header = '<h1>My header</h1>';
другой язык, например es.php:
$header = '<h1>Mi encabezado</h1>';
На странице вы затем ссылаетесь на переменную $header
вместо жесткого кодирования текста.
В качестве языкового файла, где значение переменных изменяется в зависимости от выбранного языка, который содержит переменная сеанса, содержимое вашей страницы будет меняться соответственно.
Других решений пока нет …