web-dev-qa-db-fra.com

Comment obtenir la variable de langue active en javascript sur un site multilingue?

Donc, j'essaie de modifier le script Facebook Devkit qui est dans mon index.php pour changer en fonction de la langue active du site Web, mais je ne suis pas sûr de savoir comment accéder à la variable de langue active. J'ai essayé les deux var lang ="<?php echo $lang; ?>";qui produit des guillemets vides, et var lang = document.documentElement.lang juste me donner la langue du navigateur, pas la langue active sur le site.

Je sais que je pourrais le faire avec un modèle spécifique à une langue et changer simplement la valeur de la langue manuellement, mais je ne prévois pas de faire d'autres tâches spécifiques à une langue au niveau du style ou du modèle. Je pense donc qu'un correctif regex rapide serait préférable.

Mise à jour: Si quelqu'un est intéressé, voici le code que j'ai utilisé. Pas joli, mais ça marche pour mon cas d'utilisation:

<script>(function(d, s, id) {
  var lang = "<?php echo JFactory::getLanguage()->getTag();?>";  
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  if (lang !="en-GB"){
  js.src = "//connect.facebook.net/de_DE/sdk.js#xfbml=1&version=v2.8";
  } else {
  js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8";   
  }

  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
1
nizz0k

$lang, Qui, je suppose dans votre cas, dérive de $lang = JFactory::getLanguage(); vous donnera tout l'objet langage. À partir de cet objet, vous pouvez alors accéder à l'une de ses propriétés.

Donc, pour obtenir la balise de langue, vous pouvez utiliser:

<script>
    var lang = '<?php echo JFactory::getLanguage()->getTag(); ?>';
</script>

Cela produira:

var lang = 'en-GB';
1
Lodder