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>
31 lines
831 B
TypeScript
31 lines
831 B
TypeScript
/**
|
||
* `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]}`;
|
||
}
|