Olá,
Esse é, na verdade, um processo simples.
Passo a passo: habilitar datas Shamsi no frontend do Discourse
1) Criar um Componente de Tema
-
Vá para Admin → Personalizar → Temas
-
Clique em Componentes
-
Clique em Adicionar → Criar novo
-
Nomeie-o: Conversor de Data Shamsi (Ou o que você quiser)
2) Adicionar o script (Seção Head)
Dentro do componente:
-
Abra Comum → Head
-
Cole tudo abaixo
-
Salvar
Código:
<script>
(function () {
// Aplica apenas quando o idioma do site é Persa
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;
// época (segundos ou 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);
}
// carregamento inicial
run();
// lida com rolagem infinita / atualizações ao vivo
new MutationObserver(muts => {
muts.forEach(m => m.addedNodes.forEach(n => {
if (n.nodeType === 1) run(n);
}));
}).observe(document.documentElement, { childList: true, subtree: true });
})();
</script>
___
Alternativamente, você pode carregar o que eu exportei e atribuí-lo aos seus temas.
discourse-shamsi-date.zip (1.1 KB)
Como funciona
O Discourse já envia datas Gregorianas normais para o seu navegador; este script não altera os dados, ele apenas substitui a forma como o texto da data é exibido na página, convertendo-o para Shamsi (Jalali) usando o próprio navegador.
O que o script faz (visão geral)
-
Encontra esses elementos
<time> -
Lê a data Gregoriana real de
datetime -
Converte para Shamsi
-
Substitui apenas o texto visível
-
Repete isso sempre que novas postagens são carregadas
É isso. Nada mais.
Isso lhe dará datas como esta:
Você pode ver isso online na nossa instância: https://forums.7ho.st
Boa sorte
