Für alle, die benutzerdefinierte Sprachen und Übersetzungen zu einem Discourse-Theme oder einer Theme-Komponente hinzufügen möchten: Sie können nun lokalisierte Zeichenfolgen einbinden, die für die Verwendung in UI-Komponenten bereitgestellt werden. Details dazu finden Sie hier. Die Übersetzungen werden im gleichen Format wie Core- und Plugin-Übersetzungen gespeichert und können fast auf dieselbe Weise verwendet werden.
Themes können Übersetzungsdateien in einem Format wie /locales/{locale}.yml bereitstellen. Diese Dateien müssen gültiges YAML sein und einen einzelnen obersten Schlüssel enthalten, der der definierten Sprache entspricht. Sie können über die discourse_theme-CLI, den Import einer .tar.gz-Datei, die Installation aus einem GIT-Repository oder über den Editor auf theme-creator.discourse.org definiert werden.
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. Die Fallback-Logik funktioniert wie im Core, sodass es in Ordnung ist, unvollständige Übersetzungen für nicht-englische Sprachen zu haben; dabei werden die englischen Schlüssel verwendet.
Administratoren können diese Übersetzungen auch unter Darstellung → Seitentexte verwalten. Wählen Sie ein Theme oder eine Komponente aus, um nach den Zeichenfolgen in deren Locale-Datei zu suchen, bearbeiten Sie eine Übersetzung in der ausgewählten Sprache oder setzen Sie eine Überschreibung auf den Standardwert der Locale-Datei zurück. Die Auswahl kann über /admin/customize/site_texts?theme_id=THEME_ID verlinkt werden. Seitentexte 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 Core-Übersetzungen unter einem theme-spezifischen Namespace gespeichert. Zum Beispiel:
theme_translation.{theme_id}.sidebar.welcome
Sie sollten die theme_id niemals in Ihrem Theme-Code hartkodieren. Verwenden Sie zum dynamischen Erstellen des Übersetzungsschlüssels 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, werfen Sie einen Blick auf das Fakebook-Theme von @awesomerobot: GitHub - discourse/Fakebook · GitHub
Dieses Dokument wird versioniert verwaltet – schlagen Sie Änderungen auf GitHub vor.


