需要点击两次来改变语言



我正在开发一个简单的登陆页面,您可以在其中选择显示文本的语言。

这是我的代码:

<?php
$defaultLang = isset($_COOKIE['lang_bcn']) ? $_COOKIE['lang_bcn'] : 'es'; //default 
if(isset($_GET['selectedLanguage'])){
$languageOption = "";
switch($_GET['selectedLanguage']){
case 'en':
$languageOption = 'en';
break;
case 'es':
$languageOption = 'es';
break;
default:
break;
}
if(isset($languageOption)){
setcookie('lang_bcn',$languageOption,time()+24*7*60*60);//set cookie to expire in 7 days
}
}
$arrayLang['en']['subtitle'] = 'Discover and learn by playing';
$arrayLang['es']['subtitle'] = 'Descubre y aprende jugando';
?>
//links to language selection
<a href="?selectedLanguage=es">ES</a>
<a href="?selectedLanguage=en">EN</a>
//showing the text in the selected language
<p><?php echo $arrayLang[$defaultLang]['subtitle'];?></p>

它工作得很好,除了要改变语言,我必须点击两次所选的语言链接。点击一下,文字的语言没有变化,我找不到原因。

有人能帮帮我吗?

谢谢!

您的$defaultLang变量定义在顶部,它取决于cookie。当你第一次点击按钮时,cookie还没有设置,所以$defaultLang将变成'es',然后你设置cookie。第二次单击按钮cookie已经设置,因此$defaultLang变量被设置为适当的值。只要把它放在if语句下面就可以了。

if(isset($_GET['selectedLanguage'])){
$languageOption = "";
switch($_GET['selectedLanguage']){
case 'en':
$languageOption = 'en';
break;
case 'es':
$languageOption = 'es';
break;
default:
break;
}
if(isset($languageOption)){
setcookie('lang_bcn',$languageOption,time()+24*7*60*60);//set cookie to expire in 7 days
}
}
$defaultLang = isset($_COOKIE['lang_bcn']) ? $_COOKIE['lang_bcn'] : 'es'; //default 

最新更新