用于根据所选语言显示信息的PHP代码?

时间:2013-10-02 05:35:15

标签: php

如何根据所选语言输入信息?

我的语言代码[common.php]与此处几乎相同:How to write code for multilingual in php?

    <?php
    session_start();
    header('Cache-control: private'); // IE 6 FIX

    if(isSet($_GET['lang']))
    {
        $lang = preg_replace('/[^a-zA-Z]/', '', $_GET['lang']);

    // register the session and set the cookie
        $_SESSION['lang'] = $lang;

        setcookie('lang', $lang, time() + (3600 * 24 * 30));
    }
    else if(isSet($_SESSION['lang']))
    {
        $lang = $_SESSION['lang'];
    }
    else if(isSet($_COOKIE['lang']))
    {
        $lang = $_COOKIE['lang'];
    }
    else
    {
        $lang = 'en';
    }

    switch ($lang) {
        case 'en':
            $lang_file = 'en.php';
            break;

        case 'de':
            $lang_file = 'de.php';
            break;

        case 'ru':
            $lang_file = 'ru.php';
            break;

        case 'chi':
            $lang_file = 'chi.php';
            break;

        case 'arm':
            $lang_file = 'arm.php';
            break;

        default:
            $lang_file = 'en.php';

    }

    include_once 'languages/'.$lang_file;
    ?>

我正在使用此代码选择必须根据用户选择的语言显示哪些信息:

<?php 
  function getLang()
{
return $_GET['lang'];
}
//which file will be used
if (getLang() == 'en') {
    include("e.php");
}
else if (getLang() == 'de') {
    include("d.php");
}
?>

如果我通过添加“localhost / ?lang = en ”或“localhost / ?lang = de ”打开我的网站,效果会非常好。 。但是,当我刚刚打开Localhost / 它给出了一个错误(两次)

Notice: Undefined index: lang

我也试过这段代码来选择文件,这段代码在index.php上没有显示任何内容而没有添加“/?lang = XX”

<?php
if (@$_GET['lang'] == 'en') include('e.php');
?>
<?php
if (@$_GET['lang'] == 'de') include('d.php');
?>

2 个答案:

答案 0 :(得分:1)

在不添加/?lang=XX的情况下,您没有传递任何参数,这意味着

您没有为参数lang分配任何值(这就是您收到通知的原因Notice: Undefined index: lang) 因此,当您尝试$_GET['lang']时,该值将为null。

使用isSet()检查变量是否已设置值。

因此,如果您希望默认语言(localhost没有/?lang=XX的语言)为英语,请在此行中添加:

if (!isSet($_GET['lang'])){ $lang = 'en'; }

答案 1 :(得分:0)

尝试下面,不确定是否工作..在common.php中输出

$lang = (!empty($_GET['lang'])) ? $_GET['lang'] : 'en';