首页 > 解决方案 > 多语言 PHP 链接

问题描述

所以我有一个小问题。此代码中的所有内容都可以正常工作,但是当有人出于某种原因放置这样的链接?lang=enASa而不是?lang=en时,它只显示“定义”(不知道我是否可以称其为定义)示例:相反显示:标题它显示:_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强制使用默认值。

标签: javascriptphphtml

解决方案


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

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

推荐阅读