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 del 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 un’unica chiave di livello superiore corrispondente alla locale definita. Possono essere definiti utilizzando il CLI discourse_theme, importando un file .tar.gz, installando da un repository GIT o tramite l’editor su theme-creator.discourse.org.
Un esempio di file locale potrebbe essere:
en:
theme_metadata:
description: "Questa è una descrizione per il mio tema"
settings:
theme_setting_name: "Questa è una descrizione per l'impostazione `theme_setting_name`"
another_theme_setting_name:
description: "Questa è una descrizione per l'impostazione `another_theme_setting_name`"
sidebar:
welcome: "Benvenuto"
back: "indietro,"
welcome_subhead: "Siamo felici di averti qui!"
likes_header: "Condividi l'Amore"
badges_header: "I tuoi Migliori Badge"
full_profile: "Visualizza il tuo profilo completo"
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 le lingue diverse dall’inglese, che utilizzeranno le chiavi inglesi.
In background, queste traduzioni sono memorizzate insieme alle traduzioni del core, sotto uno spazio dei nomi specifico per il tema. Ad esempio:
theme_translation.{theme_id}.sidebar.welcome
Non dovresti mai hardcodare l’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";
// Nel codice JS:
const result = i18n(themePrefix("my_translation_key"));
console.log("Da Javascript", result);
// In un tag template:
<template>{{i18n (themePrefix "blah")}}</template>
Per un esempio completo dell’uso delle traduzioni in un tema, consulta il tema Fakebook di @awesomerobot: GitHub - discourse/Fakebook · GitHub
Questo documento è sottoposto a controllo versione: suggerisci modifiche su GitHub.


