Comment une autre langue par défaut basée sur le domaine
-
24-10-2019 - |
Question
J'utilise Joomla avec le composant de traduction JoomFish. Ce site a des traductions en allemand et chinois. Ce que je suis en train de comprendre est comment obtenir le domaine .de par défaut à la traduction en langue allemande (qui se charge visité comme domain.com/de ou domain.com/cn).
Quelqu'un sait-il un moyen de le faire avec peut-être .htaccess (une sorte de redirection)? Ou peut-être PHP? Peut-être fixer une sorte de variable de session en fonction du domaine (PHP_URL_HOST)?
En ce moment j'ai apache2 configuration avec le wwww.domain.com comme l'hôte virtuel principal, et .de et .cn comme alias.
La solution
Bienvenue sur SO!
fourni, votre Apache a mod_setenvif
activé, ajoutez ceci à votre fichier .htaccess
:
# Site accessed via "example.de" or "example.cn"
SetEnvIf Host "\.de$" SITE_LANGUAGE=de
SetEnvIf Host "\.cn$" SITE_LANGUAGE=zh
# URL dependent
SetEnvIf Request_URI "^/de/" SITE_LANGUAGE=de
SetEnvIf Request_URI "^/cn/" SITE_LANGUAGE=zh
Ensuite, dans votre script PHP, vous pouvez interroger SITE_LANGUAGE
:
switch($_SERVER['SITE_LANGUAGE']) {
case 'de':
// german stuff
case 'zh':
// chinese stuff
}
Autres conseils
Merci! Après avoir ajouté le code htaccess, tout ce que je devais faire est modifier /plugins/system/jfrouter.php
à environ environ 145:
if (isset($_SERVER['SITE_LANGUAGE'])) {
switch($_SERVER['SITE_LANGUAGE']) {
case 'de':
$client_lang = 'de';
$lang_known = true;
JRequest::setVar('lang', 'de' );
break;
case 'zh':
$client_lang = 'zh';
$lang_known = true;
JRequest::setVar('lang', 'zh' );
break;
}
}
Que faire si vous avez eu un cas de sélection en php basé sur une requête get?
Quelque chose comme domain.com/?lang=de
conjointement avec
$lang = "default";
if (isset($_GET['lang'])) {
$lang = $_GET['lang'];
}
if ($lang != "default") {
if($lang == "de") {
....
dans votre code. ....
serait le cas où vous chargez votre traducteur ou d'une ressource linguistique.