feat(rehber): guncelleme alanı → sitemap/JSON-LD/OG/görünür tarih

Frontmatter'a isteğe bağlı `guncelleme` alanı geldi ve uçtan uca akıyor:
sitemap lastmod (yazı + /rehber dizini), Article JSON-LD dateModified,
og:article modified_time ve makale başlığının altındaki görünür tarih
satırı. `tarih`/`guncelleme` YYYY-AA-GG değilse ya da güncelleme yayından
önceyse build kırılır. Tarih metni saat diliminden bağımsız `trTarih` ile
üretilir.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-09-21 04:47:29 +03:00
parent a9ea0bf49b
commit d9e125c5de
5 changed files with 106 additions and 8 deletions

30
src/lib/tarih.ts Normal file
View File

@@ -0,0 +1,30 @@
/**
* `YYYY-MM-DD` tarihini Türkçe uzun biçime çevirir ("21 Eylül 2026").
* Bilinçli olarak `Date`/`toLocale*` kullanmaz: sunucu ile tarayıcının saat
* dilimi ya da ICU verisi farklıysa aynı girdi farklı metin üretir
* (hydration uyuşmazlığı, bir gün kayması). Saf metin dönüşümü her yerde
* aynı sonucu verir.
*/
const AYLAR = [
"Ocak",
"Şubat",
"Mart",
"Nisan",
"Mayıs",
"Haziran",
"Temmuz",
"Ağustos",
"Eylül",
"Ekim",
"Kasım",
"Aralık",
];
export function trTarih(iso: string): string {
const eslesme = iso.match(/^(\d{4})-(\d{2})-(\d{2})$/);
const ay = eslesme ? AYLAR[Number(eslesme[2]) - 1] : undefined;
if (!eslesme || !ay) {
throw new Error(`tarih: "${iso}" YYYY-AA-GG biçiminde değil`);
}
return `${Number(eslesme[3])} ${ay} ${eslesme[1]}`;
}