我只是编写简单的代码来显示基于用户borowser语言的翻译文本。看起来我做错了什么,因为当我使用 sk 时.php它会显示相应的 SK 翻译,但当它使用 cs.php它的翻译有问题并且没有任何文本时,它只是在任何地方显示"s"。
我的问题可能在翻译文件中,所以我对sk进行了双重性.php并将其重命名为cs.php但没有帮助。
伙计们,这里有人可以给我一个建议,哪里可能有问题?
public function fetchByVinAxnmrss($con) {
$success = false;
if($this->vin){
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$_SESSION['lang'] = $lang;
if(isSet($lang))
{
setcookie('lang', $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'cs';
}
switch ($lang)
{
case 'sk':
$lang_file = 'sk.php';
break;
case 'cs':
$lang_file = 'cs.php';
break;
default:
$lang_file = 'cs.php';
}
include_once 'languages/'.$lang_file;
try{
//$sql = "SELECT * FROM `axnmrs_cases` WHERE `vin` = ':vin' ORDER BY STR_TO_DATE(date_created, '%Y-%m-%d %H:%i:%s') LIMIT 30";
$sql = "SELECT * FROM axnmrs_cases WHERE vin = :vin ORDER BY date_created DESC LIMIT 60";
$stmt = $con->prepare( $sql );
$stmt->bindValue( "vin", $this->vin, PDO::PARAM_STR );
$stmt->execute();
while ($row = $stmt->fetch()){
echo $lang_file;
echo "<dd>".$lang['YES']."</dd>"
附言我正在使用该回显$ lang_file进行调试,以查看正在打开哪个文件。
编辑:添加我的 cs.php 文件的一部分:
$lang = array();
//All
$lang['YES'] = 'Ano';
$lang['NO'] = 'Ne';
$lang['NOT_AVALIABLE'] = 'Není k dispozici';
$lang['CURRENCY'] = 'Měna';
$lang
不是一个数组。你已经把它变成了一个字符串,PHP 确实允许你把一个字符串当作一个数组。例如
$foo = 'This is a test';
01234567890123
echo $foo[6]; // outputs s
由于您到处都在c
,这可能是因为:
$lang = 'cs';
01
echo $lang['YES'];
becomes
echo $lang[0];
becomes
echo 'c';