【发布时间】:2021-05-30 11:49:02
【问题描述】:
我正在尝试改造我公司的旧网站。目前它支持两种语言——英语和希伯来语。它的工作方式是它只是在语言文件“lang_en.php”或“lang_he.php”上运行 include_once,具体取决于 $_SESSION['lang'] 中包含的内容,即“en”或“he” .
现在我正在处理第一页 - Index.php(主页)、Login.php 和 Register.php。所有 3 个开始时都完全一样,都有一点嵌套的 include 调用。
<!DOCTYPE html>
<html lang="en">
<?php
include '../Common/HtmlHead.php';
?>
文件 HtmlHead.php 是我运行 session_start() 的地方,包含文件 LanguageParser 并为页面的 html 部分做一些其他的构建。
<?php
session_start();
include_once("../../Controller/Config.php");
include_once("../../Tests/ObjectModels/ServerResponse.php");
include_once("../../Tests/ObjectModels/Users/User.php");
include_once("../Language/LanguageParser.php");
?>
最后是 LanguageParser.php 文件,它查看 GET 和 SESSION 并确定要在哪个语言文件上运行 include_once:
if (isset($_GET['lang'])) {
$_SESSION['lang'] = $_GET['lang'];
}
// Include Language file
if (isset($_SESSION['lang'])) {
$langFile ="lang_" . $_SESSION['lang'] . ".php";
if (file_exists($_SERVER['DOCUMENT_ROOT']."/Logic/SmartView/Language/".$langFile)) {
include_once $langFile;
} else {
include_once "lang_en.php";
}
} else {
include_once "lang_en.php";
}
但由于某种原因,保存在 $_SESSION['lang'] 中的语言似乎并没有坚持下去。每个页面的行为就好像它有自己的会话并保存了自己的语言。即使我更改语言,导航到另一个页面,然后返回,语言也会恢复。
【问题讨论】: