Ciao,
Questo è in realtà un processo semplice.
Passo dopo passo: abilitare le date Shamsi sul frontend di Discourse
1) Creare un Componente Tema
-
Vai su Admin → Customize → Themes (Amministrazione → Personalizza → Temi)
-
Clicca su Components (Componenti)
-
Clicca su Add → Create new (Aggiungi → Crea nuovo)
-
Assegna un nome: Shamsi Date Converter (O quello che preferisci)
2) Aggiungere lo script (Sezione Head)
All’interno del componente:
-
Apri Common → Head (Comune → Head)
-
Incolla tutto ciò che segue
-
Salva
Codice:
<script>
(function () {
// Applica solo quando la lingua del sito è Persiano
if (!document.documentElement.lang.startsWith("fa")) return;
const formatter = new Intl.DateTimeFormat(
"fa-IR-u-ca-persian",
{ dateStyle: "medium" }
);
function toDate(value) {
if (!value) return null;
// epoch (secondi o ms)
if (/^\d{10,13}$/.test(value)) {
const n = Number(value);
return new Date(value.length === 10 ? n * 1000 : n);
}
const d = new Date(value);
return isNaN(d) ? null : d;
}
function process(el) {
if (el.dataset.shamsi === "1") return;
const date =
toDate(el.getAttribute("datetime")) ||
toDate(el.dataset.time) ||
toDate(el.getAttribute("title"));
if (!date) return;
el.textContent = formatter.format(date);
el.dataset.shamsi = "1";
}
function run(root = document) {
root.querySelectorAll("time, .relative-date").forEach(process);
}
// caricamento iniziale
run();
// gestisce lo scorrimento infinito / aggiornamenti in tempo reale
new MutationObserver(muts => {
muts.forEach(m => m.addedNodes.forEach(n => {
if (n.nodeType === 1) run(n);
}));
}).observe(document.documentElement, { childList: true, subtree: true });
})();
</script>
___
In alternativa, puoi caricare ciò che ho esportato e assegnarlo ai tuoi temi.
discourse-shamsi-date.zip (1.1 KB)
Come funziona
Discourse invia già date Gregoriane normali al tuo browser; questo script non modifica i dati, ma sostituisce solo il modo in cui il testo della data viene visualizzato sulla pagina, convertendolo in Shamsi (Jalali) utilizzando il browser stesso.
Cosa fa lo script (a grandi linee)
-
Trova quegli elementi
time -
Legge la data Gregoriana reale da
datetime -
La converte in Shamsi
-
Sostituisce solo il testo visibile
-
Ripete questa operazione ogni volta che vengono caricati nuovi post
Tutto qui. Nient’altro.
Questo ti darà date come questa:
Puoi vederlo online sulla nostra istanza: https://forums.7ho.st
Buona fortuna
