Cette action permet d'afficher un texte ou du contenu selon la langue du visiteur.

Elle est surtout utilisée comme argument d'une option pour une autre action.

🆙 lang : Choix du contenu selon la langue du visiteur

Cliquer pour lire la documentation

syntaxe 1 : {up lang | fr=oui | gb=yes}
syntaxe 2 : {up lang | lang-order=en-fr} contenu anglais {====}contenu français {/up lang}
syntaxe 3 : {up lang} retourne le meilleur code langue selon lang-order
@author: LOMART @version: UP-1.7 @license: GNU/GPLv3 @tags: Editor
  • lang: langue pour vérifer le rendu (vide en production)
  • lang-order = en,fr: ordre de saisie des langues dans contenu

Style CSS

  • tag: balise entourant le contenu retourné
  • id: identifiant
  • class: classe(s) pour bloc
  • style: style inline pour bloc
  • css-head (base-css): règles CSS définies par le webmaster (ajout dans le head)

Divers

  • info: affiche la langue du navigateur et celle affichée
  • http: utilise l'entête HTTP au lieu de Factory::getLanguage()

Version 2.4
  • Ajout options http et info
  • seuls les 2 premiers caractères du tag langue sont pris en compte (en-US => en)

Exemple simple

Bonjour le monde !
{up lang | en=Hello World! | fr=Bonjour le monde ! | de=Hallo, Welt!}

Avec ce shortcode, vous devez voir le message dans la langue de votre navigateur.

Si on indique un code langage comme argument principal de l'action, c'est cette langue qui sera utilisée et non celle du visiteur. J'utilise cette possibilité pour avoir plusieurs langue sur la même page. Ce qui est impossible en utilisation normale.

Hallo, Welt!
{up lang=de | en=Hello World! | fr=Bonjour le monde ! | de=Hallo, Welt!}

La langue est forcée sur l'allemand

Hello World!
{up lang=en | en=Hello World! | fr=Bonjour le monde ! | de=Hallo, Welt!}

La langue est forcée sur l'anglais

Hello World!
{up lang=it | en=Hello World! | fr=Bonjour le monde ! | de=Hallo, Welt!}

La langue demandée est l'italien. Comme elle n'est pas présente, on utilise la première langue : l'anglais

Comme argument d'une action

Pour la démonstration, je vais utiliser le même shortcode en forçant uniquement la langue

{up hr=i-love-up | icon-text=❤ {up lang | en=I love UP | fr=J'aime UP | de=Ich liebe UP }}

dans votre langue


en allemand


en italien (raté, donc en anglais)


Récupérer uniquement le code langue

Depuis la version 3.1, {up lang | lang-order=en,fr} retourne le code de la langue qui convient le mieux pour le visiteur du site.

Sachant que par défaut, lang-order est en,fr cela permet d'utiliser cet ensemble de shortcodes pour afficher une image selon la langue du visiteur

{up html=img | src=images/image_{up lang}.png}

image_fr.png sera utilisée pour un français et image_en.png pour tous les autres

Avec des images

Très souvent, nous avons des images avec du texte. UP permet de choisir celle qui correspond à la langue en cours

Comme pour les exemples précédents, le shortcode sera le même :

<img src="/images/icons/48/{up lang=de | en=united-kingdom.png | fr=france.png | de=germany.png }">

dans votre langue

en allemand

en italien (raté, donc en anglais)

et n'importe quoi

Cette action retourne le texte brut. Il est donc possible de l'utiliser dans toutes les situations.

{up html=p | class=w50 {up lang | en=bg-orange | fr=bg-jaune} p1 bd-rouge tc} 
   ce texte est sur fond orange en anglais et fond jaune en français
{/up html}

ce texte est sur fond orange en anglais et fond jaune en français

Saisie wysiwyg

Si vous utilisez un éditeur comme JCE ou TinyMCE, il est possible d'utiliser cette action sans saisir de code.

Il suffit de mettre entre le shortcode ouvrant et fermant, chacune des langues en les séparant par le motif {===}. Le séparateur doit débuter par {=== et se terminer par une accolade. Ce séparateur est valide : {=== anglais }. Le texte est simplement ignoré.

Il est important de préciser l'ordre d'apparition des langues : lang-order=en,fr,de. L'action ne peut pas le deviner. Si le nombre de langues déclarées est différent de celui des alternatives, un message d'erreur est affiché.

Ci-dessous, un aperçu de la saisie avec TinyMCE et le code HTML correspondant

<div>{up lang | lang-order=en,fr,de}</div>
<div><img src="/images/icons/48/united-kingdom.png" alt="Anglais" /> Hello World!</div>
<div>{===== FR}</div>
<div><img src="/images/icons/48/france.png" alt="Français" /> Bonjour le monde</div>
<div>{===== DE}</div>
<div><img src="/images/icons/48/germany.png" alt="Germany" /> Hallo, Welt!</div>
<div>{/up lang}</div>
Voici le résultat dans votre langue :
Bonjour le monde
 
 
version 2.4 : ajout des options :
  • http : la langue retenue sera celle définie par le navigateur. En l'absence de cette option, c'est la langue définie par le "language switcher" de Joomla qui est prise en compte.
  • info : affiche un message avec le code langage à utiliser (voir http) et le code de la langue qui sera réellement utilisé en fonction des données passées à l'action
Pour info, cette page utilise 21 action(s) :
upactionslist (1) readmore (1) csv2def (1) lang (12) hr (3) html (1) div (1) jcontent-info (1)