Pour ceux qui cherchent à ajouter des langues et des traductions personnalisées à un thème ou à un composant de thème Discourse, ils peuvent désormais inclure des chaînes localisées, qui sont mises à disposition pour être utilisées dans les composants de l’interface utilisateur. Les traductions sont stockées dans le même format que les traductions de base/plugin, et peuvent être utilisées de presque la même manière.
Les thèmes peuvent fournir des fichiers de traduction dans un format tel que /locales/{locale}.yml. Ces fichiers doivent être du YAML valide, avec une seule clé de niveau supérieur égale à la locale définie. Celles-ci peuvent être définies en utilisant l’interface de ligne de commande discourse_theme (CLI), en important un .tar.gz, en installant à partir d’un dépôt GIT, ou via l’éditeur sur theme-creator.discourse.org.
Un exemple de fichier de locale pourrait ressembler à ceci :
en:
theme_metadata:
description: "Ceci est une description pour mon thème"
settings:
theme_setting_name: "Ceci est une description pour le paramètre `theme_setting_name`"
another_theme_setting_name:
description: "Ceci est une description pour le paramètre `another_theme_setting_name`"
sidebar:
welcome: "Bienvenue"
back: "retour,"
welcome_subhead: "Nous sommes heureux de vous accueillir !"
likes_header: "Partagez l'amour"
badges_header: "Vos meilleurs badges"
full_profile: "Voir votre profil complet"
Les administrateurs peuvent remplacer les clés individuelles par thème dans l’interface utilisateur /admin/customize/themes. Le mécanisme de secours est géré de la même manière que pour le cœur, il est donc acceptable d’avoir des traductions incomplètes pour les langues autres que l’anglais qui utiliseront les clés anglaises.
En arrière-plan, ces traductions sont stockées aux côtés des traductions de base, sous un espace de noms spécifique au thème. Par exemple :
theme_translation.{theme_id}.sidebar.welcome
Vous ne devez jamais coder en dur l’ID du thème dans le code de votre thème, il existe donc quelques façons de vous aider à accéder aux traductions.
Dans les fichiers .hbs, vous pouvez utiliser l’helper dédié
{{theme-i18n "my_translation_key"}}
Ou, si vous devez passer la clé de traduction à un autre composant, vous pouvez utiliser l’helper theme-prefix :
<DButton @label={{theme-prefix "my_translation_key"}} />
En Javascript, ou dans les fichiers .gjs, vous pouvez utiliser la fonction themePrefix. Celle-ci est automatiquement injectée et n’a pas besoin d’être importée :
const result = I18n.t(themePrefix("my_translation_key"));
<template>{{i18n (themePrefix "blah")}}</template>
Pour un exemple complet d’utilisation des traductions dans un thème, consultez le thème Fakebook de @awesomerobot : GitHub - discourse/Fakebook
Ce document est contrôlé par version - suggérez des modifications sur github.


