Мой веб-сайт имеет два языка (английский и немецкий), между которыми пользователь может выбрать, нажав кнопку.Затем он устанавливает 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>
У кого-нибудь есть вход?Идеи, как улучшить код, также всегда высоко ценятся, так как я все еще учусь.