Per chi desidera aggiungere lingue e traduzioni personalizzate a un tema o a un componente di 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 simile a /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 file di locale di esempio 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 chiave su base per-tema nell’interfaccia utente /admin/customize/themes. Il fallback è gestito nello stesso modo del core, quindi è accettabile avere traduzioni incomplete per lingue non inglesi, che utilizzeranno 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 di locale, modifica una traduzione nella lingua selezionata o ripristina una sovrascrittura al valore predefinito del file di locale. La selezione è collegabile utilizzando /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 un namespace specifico del tema. Ad esempio:
theme_translation.{theme_id}.sidebar.welcome
Non dovresti mai codificare in modo fisso 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.


