我的网站有两种语言(英语和德语),用户可以通过单击按钮进行选择。然后,它设置一个cookie,以存储24h
的此决定。我还使用了php-i18n
中的GitHub
类。它通过将所有语言文本存储在特定的*.ini
文件中来工作。根据选择的语言,德语或英语文本将通过PHP
变量显示。我希望我解释得足够好。
除我的“法律详细信息”页面外,所有其他方法均有效。由于此页面上包含大量文本,因此我为此页面制作了两种版本,一种是英语,一种是德语。根据选择的语言,我要显示相应的页面版本。但是它总是以某种方式最终成为“默认德语”版本。关于我的代码为什么不起作用,我可能会遗漏一些非常明显的东西。
标题中的 PHP
(动态,在所有页面上都显示在其他页面之前):
require_once 'i18n.class.php';
$i18n = new i18n('lang/lang_{LANGUAGE}.ini', 'langcache/', 'de');
// Parameters: language file path, cache dir, default language (all optional)
$i18n->setForcedLang('de');
// language buttons & set cookie
if(isset($_GET['lang'])) {
$lang=$_GET['lang'];
if ($lang == 'de') {
$i18n->setForcedLang('de');
setcookie('language', 'lang-de', time() + 86400, '/');
echo "german cookie set!";
}
if ($lang == 'en') {
$i18n->setForcedLang('en');
setcookie('language', 'lang-en', time() + 86400, '/');
echo "english cookie set!";
}
}
// get language cookie
if (isset($_COOKIE['language']) && $_COOKIE['language']== "lang-de") {
echo "german cookie is really set, now get it!";
$i18n->setForcedLang('de');
} else if (isset($_COOKIE['language']) && $_COOKIE['language']== "lang-en") {
echo "english cookie is really set, now get it!";
$i18n->setForcedLang('en');
} else {
echo "no cookie set";
}
// init object: load language files, parse them if not cached, and so on.
$i18n->init();
PHP
在法律详细信息页面上:
include 'templates/header.php';
// show english or german legal details
if(isset($_GET['lang'])) {
$lang=$_GET['lang'];
if ($lang == 'de') {
echo "k, german impressum";
include 'impressum-de.php';
} else if ($lang == 'en') {
echo "english impressum";
include 'impressum-en.php';
}
} else if ($language == 'de') {
echo "german impressum b/c cookie";
include 'impressum-de.php';
} else if ($language == 'en') {
echo "english impressum b/c cookie";
include 'impressum-en.php';
} else {
echo "default German impressum";
include 'impressum-de.php';
}
按钮:
<div class="language">
<a href="?lang=de" name="lang-de" class="lang-de">DE</a>/
<a href="?lang=en" name="lang-en" class="lang-en">EN</a>
</div>
有人有输入吗?既然我还在学习中,那么如何改进代码的想法也总是受到人们的赞赏。
答案 0 :(得分:0)
尝试一下:(不是“ else if”->其“ elseif”)
include 'templates/header.php';
// show english or german legal details
if(isset($_GET['lang'])) {
$lang=$_GET['lang'];
if ($lang == 'de') {
echo "k, german impressum";
include 'impressum-de.php';
} elseif ($lang == 'en') {
echo "english impressum";
include 'impressum-en.php';
}
} elseif ($language == 'de') {
echo "german impressum b/c cookie";
include 'impressum-de.php';
} elseif ($language == 'en') {
echo "english impressum b/c cookie";
include 'impressum-en.php';
} else {
echo "default German impressum";
include 'impressum-de.php';
}