如何根据所选语言放置信息?
我的语言代码[common.php]几乎和这里一样:如何用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",效果很好。. 但是当我只是打开本地主机/它给出一个错误(两次)
Notice: Undefined index: lang
我也尝试了这段代码来选择文件,这段代码只是在索引上不显示任何内容.php没有添加"/?lang=XX"
<?php
if (@$_GET['lang'] == 'en') include('e.php');
?>
<?php
if (@$_GET['lang'] == 'de') include('d.php');
?>
如果不添加/?lang=XX
,您就不会传递任何参数,这意味着
您没有为参数lang
分配任何值(这就是您收到通知Notice: Undefined index: lang
的原因)因此,当您尝试$_GET['lang']
该值将为空时。
使用 isSet()
检查变量是否已设置值。
因此,如果您希望默认语言(不带/?lang=XX
的localhost
语言)为英语,请添加以下行:
if (!isSet($_GET['lang'])){ $lang = 'en'; }
下面尝试,现在确定是否有效。放入逗号.php
$lang = (!empty($_GET['lang'])) ? $_GET['lang'] : 'en';