我包括来自单独文件的lang。我怎么会得到错误而且我不知道为什么。 下面的代码显示$ lang [' YES']的正确翻译,如果borowser的语言是SK,只要它的CS显示错误:未定义的变量:lang。
首先我认为问题可以在翻译文件中,所以我COPY / PASTE sk.php并将其重命名为cs.php,仍然得到相同的错误。
我的代码中的文件回显在CS中显示:
1.$user_lang = cs,sk-SK;q=0.5
2.$user_lang = cs
3.$lang_file = cs.php
路径是正确的,因为它适用于sk.php,cs.php文件也存在,否则它将显示包含错误。 (我也检查确认),我怎么还得到我的错误。有人可以给我一些帮助吗?
$user_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$_SESSION['lang'] = $user_lang;
setcookie('lang', $user_lang, time() + (3600 * 24 * 30));
echo $user_lang;
$user_lang = substr($user_lang, 0, 2);
echo "<br>";
echo $user_lang;
switch ($user_lang)
{
case 'sk':
$lang_file = 'sk.php';
break;
case 'cs':
$lang_file = 'cs.php';
break;
default:
$lang_file = 'cs.php';
}
echo "<br>";
echo $lang_file;
echo "<br>";
$include_lang_path = 'languages/'.$lang_file;
echo $include_lang_path;
include_once $include_lang_path;
echo $lang['YES']
谢谢大家阅读本文!
答案 0 :(得分:2)
你可以在这里试试......
$include_lang_path = './languages/' . $lang_file;
include_once( $include_lang_path );
或
include_once( './languages/' . $lang_file );
实际上是什么一样。总是使用前面的./
。
您也可以尝试
include( $include_lang_path );
而不是
include_once $include_lang_path;
include_once()语句在执行脚本期间包含并评估指定的文件。这是一种类似于include()语句的行为,唯一的区别是如果已经包含文件中的代码,则不会再次包含它。顾名思义,它只包含一次。
所以可能之前有一些包括在内。
答案 1 :(得分:0)
您的问题可能有很多种可能性:
echo $lang_file;
输出了什么?首先,确保该文件存在。
另外,检查PHP include_path
配置中是否存在目录(语言)。
如果没有,您可以尝试在路径相对于当前文件的路径前面添加.
,例如
$include_lang_path = './languages/'.$lang_file;