Je conçois un site multilingue où j'aimerais baser certains de mes styles sur la langue active.
Pensez à quelque chose comme ça:
body.en-uk li.artist:before {content:"Artist: "}
body.it-it li.artist:before {content:"Artista: "}
body.de-de li.artist:before {content:"Künstler"}
Quelqu'un connaît-il une extension capable de faire cela (c'est-à-dire l'ajout d'une classe à la balise en fonction de la langue active)?
extensions
smz
la source
la source
Réponses:
Il existe en fait une solution plus simple à votre problème. Tout modèle sain (y compris tous les modèles fournis avec le CMS Joomla) définira l'
lang
attribut sur l'élément HTML. Cela vous permet d'utiliser le:lang()
pseudo-sélecteur CSS .Votre exemple ressemblerait à ceci:
Cela présente quelques avantages. Pour commencer, cela fonctionnera quel que soit le modèle ou même avec des solutions autres que Joomla car tout se fait dans le navigateur.
De plus, cela fonctionnera
lang
correctement avec des pièces incorporées dans d'autres langues, tant que l' attribut est correctement défini. Par exemple:Enfin, Joomla ne produit pas seulement la langue mais les paramètres régionaux. Ainsi, votre site peut utiliser en-GB, un autre en-US et le modèle reflétera cela. L'utilisation
:lang(en)
correspondra non plus, mais vous pouvez également l'utiliser:lang(en-US)
pour cibler uniquement l'anglais américain.la source
Je voudrais juste modifier le fichier templates index.php et y ajouter la classe directement.
Attribuerait la langue actuelle en tant que classe à la balise body.
la source
Une petite chose à ajouter concernant la méthode de Rouven; la prise en charge du navigateur est meilleure pour les sélecteurs d'attributs que pour le pseudo-sélecteur de langue, vous pouvez donc envisager d'utiliser quelque chose comme ceci pour cibler vos styles:
la source
Dans le fichier index.php de votre modèle, vous pouvez remplacer la
<body>
balise actuelle par ce qui suit:Cela produira ce qui suit comme exemple:
la source