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:
30
src/lib/tarih.ts
Normal file
30
src/lib/tarih.ts
Normal 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]}`;
|
||||
}
|
||||
Reference in New Issue
Block a user