docs(i18n): update master plan and add v2 phase 0/1 smoke tests
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
# I18n V2 Faz 0 — Mimari kararlar
|
||||
|
||||
Tarih: 2026-07-20
|
||||
|
||||
## ADR-001 — Locale bağlama göre çözülür
|
||||
|
||||
Tek bir genel resolver yerine dört açık bağlam kullanılır:
|
||||
|
||||
- Public auth: instance default
|
||||
- Invitation: invitation snapshot, ardından instance default
|
||||
- Freelancer: user preference, ardından instance default
|
||||
- Portal: user preference, client portal default, instance default
|
||||
|
||||
Public auth locale çözümünde cookie ve `Accept-Language` kullanılmaz. Locale
|
||||
cookie'si dil değiştirme ve resolver akışından kaldırılır; authenticated tercih
|
||||
veritabanından, public dil instance ayarından çözülür.
|
||||
|
||||
## ADR-002 — Kişisel tercih ve yönetim ayarı ayrıdır
|
||||
|
||||
`user_preferences.language`, `clients.portal_locale` ve
|
||||
`instance_i18n_settings.default_locale` aynı kavram değildir:
|
||||
|
||||
- User preference kişinin açık seçimidir.
|
||||
- Client portal locale adminin müşteri için belirlediği başlangıç/default dildir.
|
||||
- Instance default public yüzeylerin ve fallback zincirinin dilidir.
|
||||
|
||||
Bu değerler farklı action/service fonksiyonlarıyla değiştirilir.
|
||||
|
||||
## ADR-003 — Ayarlar gerçek alt rotalara ayrılır
|
||||
|
||||
Component state ile değişen tek ayarlar ekranı kullanılmaz. `/settings/*`
|
||||
altındaki her bölüm gerçek bir route olur. Ortak layout başlık, kalıcı iç
|
||||
navigasyon, loading ve error sınırını sağlar. Her sonraki settings fazı kendi veri
|
||||
yükleme ve mutation sınırını ayırır.
|
||||
|
||||
## ADR-004 — Sayfa tamamlanma birimi
|
||||
|
||||
Bir sayfa yalnız title çevrildiğinde tamamlanmış sayılmaz. Header, form, dialog,
|
||||
toast, validation, loading/error/empty state, accessibility metni ve locale
|
||||
formatlama aynı sayfa fazının kapsamındadır.
|
||||
|
||||
## ADR-005 — Dinamik metin ve iletişim içeriği ayrıdır
|
||||
|
||||
Proje, görev, takvim, finans ve benzeri yönetilen kayıtların çevrilebilir metin
|
||||
alanları locale tab'larıyla saklanır. Chat mesajı ve revizyon talebi gibi bir
|
||||
kişinin yazdığı iletişim metni çoğaltılmaz; kaynak dili korunur.
|
||||
|
||||
## ADR-006 — V1'den korunan parçalar
|
||||
|
||||
Korunacak:
|
||||
|
||||
- `instance_locales`
|
||||
- `instance_i18n_settings`
|
||||
- `instance_ui_translations`
|
||||
- `content_translations`
|
||||
- Built-in TR/EN katalog ve fallback temeli
|
||||
- Locale-aware `Intl` helper'ları
|
||||
|
||||
Düzeltilecek:
|
||||
|
||||
- Resolver öncelikleri
|
||||
- Preference doğrulaması
|
||||
- Settings bilgi mimarisi
|
||||
- Katalog kapsamı
|
||||
- Translation registry kapsamı
|
||||
- Sayfa bazlı payload sınırı
|
||||
|
||||
Sonraki fazlarda kaldırılabilecek:
|
||||
|
||||
- Auth sayfalarına bağlı locale select yüzeyi
|
||||
- Eski monolit settings composition
|
||||
- Katalog içindeki tamamlanmamış genel namespace yapısı
|
||||
Reference in New Issue
Block a user