Cómo predeterminar otro idioma basado en el dominio
-
24-10-2019 - |
Pregunta
Estoy usando Joomla con el componente de traducción de Joomfish. Este sitio web tiene traducciones alemanas y chinas. Lo que estoy tratando de averiguar es cómo hacer que el dominio .de sea predeterminado a la traducción del idioma alemán (que se cargaría si se lo visite como dominio.com/de o dominio.com/cn).
¿Alguien sabe una manera de hacer esto con tal vez .htaccess (algún tipo de redirección)? O posiblemente PHP? ¿Quizás establezca algún tipo de variable de sesión basada en el dominio (php_url_host)?
En este momento tengo la configuración de Apache2 con el wwww.domain.com como el principal host virtual, y el .de y .cn como alias.
Solución
¡Bienvenido a SO!
Proporcionado, su apache tiene mod_setenvif
habilitado, agregue esto a su .htaccess
expediente:
# 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
Entonces, en su script PHP puede consultar SITE_LANGUAGE
:
switch($_SERVER['SITE_LANGUAGE']) {
case 'de':
// german stuff
case 'zh':
// chinese stuff
}
Otros consejos
¡Gracias! Después de agregar el código htaccess, todo lo que tenía que hacer era editar /plugins/system/jfrouter.php
alrededor de alrededor de 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;
}
}
¿Qué pasa si tuvo un caso de selección en PHP basado en una solicitud GET?
Algo como domain.com/?lang=de
junto con
$lang = "default";
if (isset($_GET['lang'])) {
$lang = $_GET['lang'];
}
if ($lang != "default") {
if($lang == "de") {
....
en tu código. ....
Sería donde carga su recurso de traductor o idioma.