Emplacement des fichiers de langue

La plupart des fichiers de langue de Joomla! sont situés dans des dossiers de langue, l'un à la racine du site et l'autre dans le dossier administrator. Chaque langue possède son propre sous-dossier basé sur les codes de langue standard RFC3066. Chaque extension stocke ses traductions sous un nom dérivé du nom de l'extension. Quelques exemples :

siteroot/language/en-GB/com_content.ini
siteroot/administrator/language/en-GB/com_content.ini
siteroot/administrator/language/en-GB/com_content.sys.ini

Les fichiers contiennent des lignes composées d'une clé et de sa traduction :

COM_CONTENT="Articles"
COM_CONTENT_ADD_NEW_MENU_ITEM="Nouveau lien de menu"
COM_CONTENT_ARTICLE_CONTENT="Contenu"
COM_CONTENT_ARTICLES_TABLE_CAPTION="Tableau des articles"
COM_CONTENT_ARTICLES_TITLE="Articles"

Le code PHP de Joomla utilise la clé. Elle est remplacée par la traduction du texte à l'exécution. Le fichier .ini contient les traductions utilisées par l'extension. Les fichiers sys.ini contiennent les traductions utilisées par Joomla pour gérer l'extension. Un fichier de langue peut contenir des centaines de lignes.

Il est recommandé aux extensions tierces de stocker leurs fichiers de langue dans des dossiers de langue au sein de l'extension. Ils sont ainsi à l'abri d'une suppression si un administrateur décide de désinstaller une langue. Exemple :

siteroot/components/com_countrybase/language/en-GB/com_countrybase.ini
siteroot/administrator/components/com_countrybase/language/en-GB/com_countrybase.ini
siteroot/administrator/components/com_countrybase/language/en-GB/com_countrybase.sys.ini

Ne modifiez jamais un fichier de langue du cœur de Joomla! ou d'une extension tierce ! Toute modification que vous apportez sera perdue lors de la prochaine mise à jour. Si vous souhaitez modifier le libellé d'un élément de langue, utilisez le composant officiel de dérogation linguistique.

Les surcharges de langue sont vos remplacements pour les traductions de clés de langue du cœur ou d'une extension. Ce sont des traductions individuelles, une ou deux, pas un fichier entier ! Les dérogations linguistiques pour une langue donnée sont toutes stockées dans un seul fichier :

siteroot/language/overrides/en-GB.override.ini
siteroot/language/overrides/fr-FR.override.ini
siteroot/language/overrides/de-DE.override.ini

siteroot/administrator/language/overrides/en-GB.override.ini
siteroot/administrator/language/overrides/fr-FR.override.ini
siteroot/administrator/language/overrides/de-DE.override.ini

Ordre de chargement des langues

À chaque chargement de page, les traductions de la langue en-GB sont chargées en premier. Cela garantit qu'aucune clé n'est visible par les utilisateurs du site. Si une autre langue est utilisée, les traductions de cette langue sont ensuite chargées, remplaçant les traductions en-GB. Les autres langues ont tendance à avoir du retard par rapport à l'en-GB dans la création des traductions, les utilisateurs peuvent donc parfois voir des mots ou des phrases en anglais parmi ceux de leur propre langue.

Enfin, les traductions sont chargées à partir du fichier de dérogation linguistique. Cela permet au site d'utiliser des mots ou des expressions alternatifs adaptés aux circonstances locales.

Dérogations linguistiques

Il peut arriver que vous souhaitiez remplacer un seul élément de langue traduit par quelque chose de plus adapté aux circonstances locales. Un cas courant est celui où vous créez une dérogation de template ou une disposition et souhaitez ajouter du contenu utilisant une nouvelle clé de langue. L'exemple suivant illustre un cas où du texte a été ajouté à la disposition de déconnexion du module de connexion, décrit dans l'article sur les Dispositions de template. La disposition alternative contient ce code :

<p class="text-center">
Your session will expire at <br><?php echo $endTime; ?>
</p>

Pour un site multilingue utilisant l'anglais, le français et l'allemand, le code doit être modifié :

<p class="text-center">
<?php echo Text::_('TPL_CASSIOPEIA_MOD_LOGIN_SESSION_EXPIRES_AT')?><br><?php echo $endTime; ?>
</p>

Remarque : si vous avez suivi le tutoriel sur les dispositions de template, vous avez peut-être déjà une clé TPL_CASSIOPEIA_MOD_LOGIN_LAYOUT_EXPIRES qui se traduit par Expires. Mais celle-ci est utilisée dans siteroot/administrator/language/overrides.

La nouvelle clé peut maintenant être traduite dans chaque langue. Les traductions seront enregistrées dans siteroot/language/overrides.

  • Sélectionner Système → Panneau de gestion → Dérogations linguistiques
  • Sélectionner votre langue et l'emplacement Site.
  • Sélectionner le bouton Nouveau et remplir le formulaire. Dans cet exemple, la clé de langue est TPL_CASSIOPEIA_MOD_LOGIN_SESSION_EXPIRES_AT et le texte pourrait être Your session will expire at
  • Enregistrer et fermer le formulaire.
  • Répéter le processus de traduction pour chaque langue.

languages edit override form

Enfin, vérifier que la traduction a bien été mise en œuvre.

Override Result in site login form