Für alle, die benutzerdefinierte Sprachen und Übersetzungen in ein Discourse-Theme oder einen Theme-Baustein einbinden möchten: Es ist nun möglich, lokalisierte Zeichenfolgen einzuschließen, die in UI-Komponenten verwendet werden können. Die Übersetzungen werden im gleichen Format wie die Kern- oder Plugin-Übersetzungen gespeichert und können auf nahezu identische Weise verwendet werden.
Themes können Übersetzungsdateien in einem Format wie /locales/{locale}.yml bereitstellen. Diese Dateien müssen gültiges YAML sein, mit einem einzigen obersten Schlüssel, der dem definierten Locale entspricht. Sie können über die discourse_theme-CLI definiert werden, indem eine .tar.gz-Datei importiert wird, aus einem GIT-Repository installiert wird oder über den Editor auf theme-creator.discourse.org.
Eine Beispiel-Locale-Datei könnte wie folgt aussehen:
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"
Administratoren können einzelne Schlüssel auf Theme-Ebene in der Benutzeroberfläche unter /admin/customize/themes überschreiben. Der Fallback-Mechanismus funktioniert auf die gleiche Weise wie im Kernsystem, sodass es in Ordnung ist, unvollständige Übersetzungen für nicht-englische Sprachen zu haben; diese werden die englischen Schlüssel verwenden.
Administratoren können diese Übersetzungen auch unter Design → Site-Texte verwalten. Wählen Sie ein Theme oder einen Baustein aus, um die Zeichenfolgen seiner Locale-Datei zu durchsuchen, bearbeiten Sie eine Übersetzung in der gewählten Sprache oder kehren Sie eine Überschreibung auf den Standardwert der Locale-Datei zurück. Die Auswahl ist über /admin/customize/site_texts?theme_id=THEME_ID verlinkbar. Site-Texte identifiziert diese Einträge als js.theme_translations.THEME_ID.KEY; Bearbeitungen verwenden dieselben Theme-Übersetzungsüberschreibungen wie der Theme-Editor.
Im Hintergrund werden diese Übersetzungen neben den Kern-Übersetzungen unter einem theme-spezifischen Namespace gespeichert. Zum Beispiel:
theme_translation.{theme_id}.sidebar.welcome
Sie sollten das theme_id niemals hartkodiert in Ihrem Theme-Code verwenden. Um den Übersetzungsschlüssel dynamisch zu erstellen, verwenden Sie den themePrefix-Helper:
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>
Für ein vollständiges Beispiel zur Verwendung von Übersetzungen in einem Theme, sehen Sie sich das Fakebook-Theme von @awesomerobot an: GitHub - discourse/Fakebook · GitHub
Dieses Dokument wird versioniert verwaltet – schlagen Sie Änderungen auf github vor.


