MultiLanguage PHP链接

时间:2018-05-30 14:15:36

标签: javascript php html

所以我有点问题。此代码中的所有内容都有效,但当有人将?lang = enASa 这样的链接放入?lang = en 时出于某种原因它只显示" define& #34; (不知道我是否可以称之为定义)示例:它不显示:标题,而是显示: _TITLE 。代码是这样的:

<?php
    session_start();

    // Set Language variable
    if(isset($_GET['lang']) && !empty($_GET['lang'])){
        $_SESSION['lang'] = $_GET['lang'];

        if(isset($_SESSION['lang']) && $_SESSION['lang'] != $_GET['lang']){
            echo "<script type='text/javascript'> location.reload(); </script>";
        }
    }

    // Include Language file
    if(isset($_SESSION['lang'])){
        include "lang_".$_SESSION['lang'].".php";
    }else{
        include "lang_en.php";
    }
?>

在我使用此页面(<?= _TITLE ?>)替换单词:

<h3 style="color: white" class="subheading left"><?= _TITLE ?></h3>

要翻译我正在使用此文件(lang_en.php):

<?php

define("_TITLE", "Title");

所有代码都运行正常,我希望有人可以帮助我,在lang无效时强制使用默认英语。示例:如果有人尝试www.example.com/index.php?lang=edadsa而不是www.example.com/index.php?lang=en我们的www.example.com/index.php强制使用默认值。

1 个答案:

答案 0 :(得分:3)

在调用include之前,您必须检查给定语言是否存在语言文件。

// Include Language file
if(isset($_SESSION['lang']) && file_exists("lang_".$_SESSION['lang'].".php")){
 include "lang_".$_SESSION['lang'].".php";
}else{
 include "lang_en.php";
}