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:
- Davet kaydindaki locale.
- Guvenli locale cookie'si.
- Instance varsayilan dili.
- Built-in fallback
tr.
Freelancer uygulamasi:
- Oturum acmis kullanicinin
user_preferences.languagedegeri. - Guvenli locale cookie'si.
- Instance varsayilan dili.
- Built-in fallback
tr.
Musteri portali:
- Musteri profilinin veya
clients.portal_localealaninin locale degeri. - Portal davetinden gelen locale.
- Guvenli locale cookie'si.
- Instance varsayilan dili.
- Built-in fallback
tr.
Mobil ve API istekleri:
- Auth kullanicisinin kayitli tercihi.
- Guvenilir endpoint parametresi veya
Accept-Languagesinyali. - Instance varsayilan dili.
- 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.