Per chi desidera aggiungere lingue e traduzioni personalizzate a un tema o componente del tema di Discourse, è ora possibile includere stringhe localizzate, rese disponibili per l’uso nei componenti dell’interfaccia utente. Le traduzioni sono memorizzate nello stesso formato delle traduzioni di core/plugin e possono essere utilizzate in modo quasi identico.
I temi possono fornire file di traduzione in un formato come /locales/{locale}.yml. Questi file devono essere YAML validi, con una singola chiave di primo livello uguale alla locale definita. Possono essere definiti utilizzando la CLI discourse_theme, importando un .tar.gz, installando da un repository GIT o tramite l’editor su theme-creator.discourse.org.
Un esempio di file locale potrebbe essere simile al seguente:
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"
Gli amministratori possono sovrascrivere singole chiavi su base per-tema nell’interfaccia utente /admin/customize/themes. Il fallback viene gestito nello stesso modo del core, quindi è accettabile avere traduzioni incomplete per lingue non inglesi: verranno utilizzate le chiavi inglesi.
Gli amministratori possono anche gestire queste traduzioni in Aspetto → Testi del sito. Seleziona un tema o un componente per cercare le stringhe del suo file locale, modifica una traduzione nella lingua selezionata o ripristina una sovrascrittura al valore predefinito del file locale. La selezione è collegabile tramite /admin/customize/site_texts?theme_id=THEME_ID. I testi del sito identificano queste voci come js.theme_translations.THEME_ID.KEY; le modifiche utilizzano le stesse sovrascritture di traduzione del tema dell’editor dei temi.
In background, queste traduzioni sono memorizzate insieme alle traduzioni di core, sotto uno namespace specifico del tema. Ad esempio:
theme_translation.{theme_id}.sidebar.welcome
Non dovresti mai codificare in modo fisso (hardcode) il theme_id nel codice del tuo tema. Per costruire dinamicamente la chiave di traduzione, utilizza l’helper 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>
Per un esempio completo dell’uso delle traduzioni in un tema, dai un’occhiata al tema Fakebook di @awesomerobot: GitHub - discourse/Fakebook · GitHub
Questo documento è sottoposto a controllo di versione - suggerisci modifiche su github.


