Pour ceux qui souhaitent ajouter des langues personnalisées et des traductions à 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 une utilisation dans les composants de l’interface utilisateur. Les traductions sont stockées dans le même format que les traductions du noyau et des plugins, et peuvent être utilisées de manière presque identique.
Les thèmes peuvent fournir des fichiers de traduction dans un format tel que /locales/{locale}.yml. Ces fichiers doivent être des fichiers YAML valides, avec une seule clé de premier niveau égale à la langue définie. Ils peuvent être définis en utilisant l’outil en ligne de commande discourse_theme, en important un fichier .tar.gz, en installant depuis un dépôt GIT, ou via l’éditeur sur theme-creator.discourse.org.
Un exemple de fichier de langue pourrait ressembler à ceci :
fr:
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 ravis de vous avoir ici !"
likes_header: "Partagez l'amour"
badges_header: "Vos meilleurs badges"
full_profile: "Voir votre profil complet"
Les administrateurs peuvent remplacer des clés individuelles par thème dans l’interface utilisateur /admin/customize/themes. La gestion des valeurs par défaut fonctionne de la même manière que pour le noyau, il est donc acceptable d’avoir des traductions incomplètes pour les langues autres que l’anglais, car elles utiliseront les clés anglaises.
En arrière-plan, ces traductions sont stockées aux côtés des traductions du noyau, 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’identifiant du thème (theme_id) dans votre code de thème. Pour construire dynamiquement la clé de traduction, utilisez l’helper themePrefix :
import { i18n } from "discourse-i18n";
import { themePrefix } from "virtual:theme";
// Dans le code JS :
const result = i18n(themePrefix("ma_cle_de_traduction"));
console.log("Depuis Javascript", result);
// Dans une balise de modèle :
<template>{{i18n (themePrefix "blah")}}</template>
Pour un exemple complet de l’utilisation des traductions dans un thème, consultez le thème Fakebook de @awesomerobot : GitHub - discourse/Fakebook · GitHub
Ce document est versionné - proposez des modifications sur GitHub.


