Für alle, die benutzerdefinierte Sprachen und Übersetzungen zu einem Discourse-Theme oder einer Theme-Komponente hinzufügen möchten, ist es jetzt möglich, lokalisierte Zeichenfolgen einzuschließen, die in UI-Komponenten verwendet werden können. Übersetzungen werden im gleichen Format wie Kern-/Plugin-Übersetzungen gespeichert und können nahezu auf die gleiche Weise verwendet werden.
Themes können Übersetzungsdateien im Format /locales/{locale}.yml bereitstellen. Diese Dateien sollten gültiges YAML sein, mit einem einzigen Schlüssel auf oberster Ebene, der der zu definierenden Sprache entspricht. Diese können mit der discourse_theme-CLI definiert werden, indem eine .tar.gz-Datei importiert, aus einem GIT-Repository installiert oder über den Editor auf theme-creator.discourse.org bearbeitet wird.
Eine Beispiel-Lokalisierungsdatei könnte so aussehen:
en:
theme_metadata:
description: "Dies ist eine Beschreibung für mein Theme"
settings:
theme_setting_name: "Dies ist eine Beschreibung für die Einstellung `theme_setting_name`"
another_theme_setting_name:
description: "Dies ist eine Beschreibung für die Einstellung `another_theme_setting_name`"
sidebar:
welcome: "Willkommen"
back: "zurück"
welcome_subhead: "Wir freuen uns, dass du hier bist!"
likes_header: "Teile die Liebe"
badges_header: "Deine Top-Abzeichen"
full_profile: "Zeige dein vollständiges Profil"
Administratoren können einzelne Schlüssel themespezifisch in der Benutzeroberfläche unter /admin/customize/themes überschreiben. Die Fallback-Logik wird wie im Kernbereich gehandhabt, sodass unvollständige Übersetzungen für nicht-englische Sprachen in Ordnung sind; sie verwenden dann die englischen Schlüssel.
Im Hintergrund werden diese Übersetzungen zusammen mit den Kern-Übersetzungen unter einem themespezifischen Namespace gespeichert. Zum Beispiel:
theme_translation.{theme_id}.sidebar.welcome
Du solltest die theme_id in deinem Theme-Code niemals hartkodieren. Um den Übersetzungsschlüssel dynamisch zu erstellen, verwende den themePrefix-Helper:
import { i18n } from "discourse-i18n";
import { themePrefix } from "virtual:theme";
// Im JS-Code:
const result = i18n(themePrefix("my_translation_key"));
console.log("Aus Javascript", result);
// In einem Template-Tag:
<template>{{i18n (themePrefix "blah")}}</template>
Für ein vollständiges Beispiel zur Verwendung von Übersetzungen in einem Theme, schau dir @awesomerobots Fakebook-Theme an: GitHub - discourse/Fakebook · GitHub
Dieses Dokument ist versioniert – schlage Änderungen auf GitHub vor.


