Files

4.9 KiB

title, description, phase, status, last_updated
title description phase status last_updated
Faz 0 ADR Seti Neta cok dilli sisteminin baslangic karar kayitlari. 0 accepted 2026-07-19

Faz 0 ADR Seti

Bu dosya cok dillilik calismasinin ilk uygulama kararlarini kilitler. Amac, sonraki fazlarda ayni problemi tekrar tekrar tartismadan ilerleyebilmek ve SQLite tabanli self-host hedefini korumaktir.

ADR-I18N-0001 — UI cevirisi ve domain icerik cevirisi ayrilacak

Durum

Kabul edildi.

Baglam

Neta'da iki farkli metin tipi var:

  • Uygulamanin kendisine ait sabit arayuz metinleri.
  • Freelancer veya musteri tarafindan uretilen is icerikleri.

Bu iki veri tipini ayni tabloda veya ayni anahtar modeliyle tutmak, hem fallback hem de izin modeli tarafinda karmasa yaratir.

Karar

Arayuz cevirileri stabil katalog anahtarlariyla yonetilecek. Built-in tr ve en kataloglari kod icinde surumlenecek; instance sahibi tarafindan eklenen override'lar SQLite icindeki instance_ui_translations modelinde tutulacak.

Domain icerik cevirileri entity ve field bazli tutulacak. Bunun icin Faz-1'de content_translations modeli eklenecek.

Sonuc

  • Arayuz metinleri release sureciyle denetlenebilir kalir.
  • Sonradan eklenen diller deployment gerektirmeden doldurulabilir.
  • Is icerikleri icin form tab'lari net bicimde modellenir.
  • Chat, gunluk notu ve musteri mesajlari gibi iletisim icerikleri otomatik cevrilmez; yazildigi dilde kalir.

ADR-I18N-0002 — Locale cozumleme onceligi

Durum

Kabul edildi.

Baglam

Ayni instance icinde freelancer, musteri portali, davet ekranlari ve public API farkli baglamlarda calisir. Locale cozumleme her yerde ayni kaynaga bakarsa portal daveti gibi auth oncesi akislarda yanlis dil gorunebilir.

Karar

Locale asagidaki sirayla cozumlenecek.

Auth oncesi davet ekranlari:

  1. Davet kaydindaki locale.
  2. Guvenli locale cookie'si.
  3. Instance varsayilan dili.
  4. Built-in fallback tr.

Freelancer uygulamasi:

  1. Oturum acmis kullanicinin user_preferences.language degeri.
  2. Guvenli locale cookie'si.
  3. Instance varsayilan dili.
  4. Built-in fallback tr.

Musteri portali:

  1. Musteri profilinin veya clients.portal_locale alaninin locale degeri.
  2. Portal davetinden gelen locale.
  3. Guvenli locale cookie'si.
  4. Instance varsayilan dili.
  5. Built-in fallback tr.

Mobil ve API istekleri:

  1. Auth kullanicisinin kayitli tercihi.
  2. Guvenilir endpoint parametresi veya Accept-Language sinyali.
  3. Instance varsayilan dili.
  4. Built-in fallback tr.

Sonuc

  • Musteri davet ekrani login olmadan dogru dilde acilir.
  • Freelancer tercihi musteri portalini yanlislikla etkilemez.
  • Mobil istemci ayni kurallari API kontratindan okuyabilir.

ADR-I18N-0003 — Dashboard ve portal route'larina locale prefix eklenmeyecek

Durum

Kabul edildi.

Baglam

/tr/dashboard, /en/dashboard gibi route prefix'leri public marketing sitelerinde gucludur, ancak Neta'nin dashboard ve portal yapisi oturum, davet, yetki ve self-host basitligi uzerine kurulu. Prefix eklemek route sayisini, redirect davranislarini ve mobil endpoint eslemesini gereksiz buyutur.

Karar

Dashboard, portal ve davet route'lari mevcut URL yapisini koruyacak. Dil, locale resolver ve cookie/user/client kayitlariyla belirlenecek.

Sonuc

  • Var olan internal linkler ve mobil baglanti modeli korunur.
  • Self-host deploy ve reverse proxy ayarlari sade kalir.
  • Public landing/docs tarafi isterse ileride ayri route prefix stratejisi kullanabilir; bu karar sadece uygulama kabugu icindir.

ADR-I18N-0004 — Hafif custom runtime i18n katmani yazilacak

Durum

Kabul edildi.

Baglam

Projenin ana hedeflerinden biri dependency sayisini azaltmak ve self-host'u kolaylastirmak. Mevcut ihtiyaclar temel katalog cozumleme, fallback, namespace yukleme, Intl bicimlendirme ve SQLite override okuma uzerinden karsilanabilir.

Karar

Ilk cok dillilik surumunde agir bir i18n runtime dependency'si eklenmeyecek. Neta icinde kucuk bir i18n katmani yazilacak:

  • lib/i18n/* ortak tip ve format yardimcilari.
  • server/i18n/* locale resolver, katalog merge ve translator servisleri.
  • Client component'ler icin sinirli scope'ta provider.
  • Tarih, sayi ve para bicimlendirme icin native Intl.

Sonuc

  • Yeni dependency eklenmeden Faz-2 runtime kurulabilir.
  • Katalog sozlesmesi Neta'nin domain ihtiyaclarina gore sekillenir.
  • Ileride ihtiyac buyurse baska kutuphaneye gecis icin katalog anahtarlari korunabilir.

ADR-I18N-0005 — Built-in diller ve yayin kurali

Durum

Kabul edildi.

Karar

Turkce (tr) ve Ingilizce (en) built-in, aktif ve silinemez diller olacak. Instance varsayilan dili ilk migration sonrasinda tr olacak.

Yeni eklenen diller once draft durumunda olusturulacak. Portal icin kritik namespace'leri tamamlanmayan bir dil musteri dili olarak secilemeyecek.

Sonuc

  • Eksik ceviri musteriye yarim bir portal deneyimi olarak yansimaz.
  • Instance sahibi yeni dili hazirlayip test ettikten sonra aktif edebilir.
  • Fallback davranisi her zaman tahmin edilebilir kalir.