Pour ceux qui souhaitent ajouter des langues et des traductions personnalisées à un thème ou à un composant de thème Discourse, il est désormais possible d’inclure des chaînes localisées, mises à disposition pour une utilisation dans les composants d’interface. Les traductions sont stockées dans le même format que les traductions du cœur du système ou des plugins, et peuvent être utilisées de manière quasi identique.
Les thèmes peuvent fournir des fichiers de traduction au format /locales/{locale}.yml. Ces fichiers doivent être du YAML valide, avec une seule clé de premier niveau égale à la langue définie. Ils peuvent être créés à l’aide de la CLI discourse_theme, en important un .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 :
en:
theme_metadata:
description: "This is a description for my theme"
settings:
theme_setting_name: "This is a description for the setting `theme_setting_name`"
another_theme_setting_name:
description: "This is a description for the setting `another_theme_setting_name`"
sidebar:
welcome: "Welcome"
back: "back,"
welcome_subhead: "We're glad you're here!"
likes_header: "Share the Love"
badges_header: "Your Top Badges"
full_profile: "View your full profile"
Les administrateurs peuvent remplacer des clés individuelles pour chaque thème dans l’interface utilisateur /admin/customize/themes. Le repli (fallback) est géré de la même manière que pour le cœur du système, il est donc acceptable d’avoir des traductions incomplètes pour les langues non anglaises, car elles utiliseront les clés anglaises.
Les administrateurs peuvent également gérer ces traductions dans Apparence → Textes du site. Sélectionnez un thème ou un composant pour rechercher les chaînes de son fichier de langue, modifier une traduction dans la langue sélectionnée, ou rétablir une valeur par défaut du fichier de langue. La sélection est accessible via /admin/customize/site_texts?theme_id=THEME_ID. Les textes du site identifient ces entrées comme js.theme_translations.THEME_ID.KEY ; les modifications utilisent les mêmes remplacements de traduction de thème que l’éditeur de thème.
En arrière-plan, ces traductions sont stockées aux côtés des traductions du cœur du système, 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’theme_id dans votre code de thème. Pour construire dynamiquement la clé de traduction, utilisez l’assistant themePrefix :
import { i18n } from "discourse-i18n";
import { themePrefix } from "virtual:theme";
// In JS code:
const result = i18n(themePrefix("my_translation_key"));
console.log("From Javascript", result);
// In a template tag:
<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 sous contrôle de version - suggérez des modifications sur github.


