locale — перевести сайт, используя сеанс в переполнении стека

Я пытаюсь перевести свой сайт с помощью 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, чтобы увидеть сайт на том языке, который ему нужен, даже если он возвращается на сайт второй, третий … раз. Спасибо, и извините за мой плохой язык 🙂

1

Решение

Один из способов сделать это:

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 вместо жесткого кодирования текста.
В качестве языкового файла, где значение переменных изменяется в зависимости от выбранного языка, который содержит переменная сеанса, содержимое вашей страницы будет меняться соответственно.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]