116 lines
3.4 KiB
Markdown
116 lines
3.4 KiB
Markdown
---
|
||
title: Çok Dilli Sistem Self-host Upgrade Prosedürü
|
||
description: Neta i18n V2 geçişi için backup, migration, backfill, integrity ve release kabul adımları.
|
||
last_updated: 2026-07-21
|
||
---
|
||
|
||
# Çok Dilli Sistem Self-host Upgrade Prosedürü
|
||
|
||
Bu prosedür mevcut self-host kurulumlarda eski tek dilli içerikleri yeni
|
||
`content_translations` modeline güvenli şekilde taşımak için kullanılır.
|
||
|
||
## 1. Yayın öncesi hazırlık
|
||
|
||
1. Uygulamanın mevcut sürümünü durdurmadan önce kalıcı data dizinini doğrula:
|
||
`DATA_DIR` ve `DATABASE_PATH` production değerleri Dokploy/host tarafında
|
||
aynı volume'u göstermeli.
|
||
2. Mutlaka yedek al:
|
||
`pnpm db:backup`
|
||
3. Yeni migration'ları uygula:
|
||
`pnpm db:migrate`
|
||
|
||
## 2. Backfill
|
||
|
||
Önce dry-run çalıştır:
|
||
|
||
```bash
|
||
pnpm i18n:backfill
|
||
```
|
||
|
||
Çıktıdaki `planned` sayısı eklenecek çeviri satırlarını gösterir. Sonuç doğruysa
|
||
yazma modunu çalıştır:
|
||
|
||
```bash
|
||
pnpm i18n:backfill -- --write
|
||
```
|
||
|
||
Script idempotent çalışır; aynı kayıt/alan/locale için var olan çeviriyi ezmez.
|
||
Kaynak dil instance default locale'dir. Default ayar bulunamazsa güvenli fallback
|
||
olarak `tr` kullanılır.
|
||
|
||
## 3. Integrity raporu ve cleanup
|
||
|
||
Rapor modunda çalıştır:
|
||
|
||
```bash
|
||
pnpm i18n:integrity -- --report-only
|
||
```
|
||
|
||
Rapor; kullanıcı dil tercihi, müşteri portal dili, davet dili, bilinmeyen locale,
|
||
desteklenmeyen field ve orphan translation satırlarını listeler.
|
||
|
||
Yalnız orphan/desteklenmeyen `content_translations` satırlarını temizlemek için:
|
||
|
||
```bash
|
||
pnpm i18n:integrity -- --fix
|
||
```
|
||
|
||
Kullanıcı tercihi veya müşteri portal dili gibi ürün kararı gerektiren tutarsızlıklar
|
||
otomatik değiştirilmez; admin panelinden düzeltilmelidir.
|
||
|
||
## 4. Release gate
|
||
|
||
Kod tarafı hızlı kalite kapısı:
|
||
|
||
```bash
|
||
pnpm i18n:release-gate
|
||
pnpm typecheck
|
||
pnpm lint
|
||
pnpm build
|
||
```
|
||
|
||
`i18n:release-gate` şu kontrolleri yapar:
|
||
|
||
- TR/EN katalog key parity.
|
||
- Interpolation değişken parity.
|
||
- Login/register/forgot/reset auth ekranlarında dil seçici regresyonu.
|
||
- Bilgilendirme amaçlı hard-coded text sample raporu.
|
||
|
||
Browser smoke için kontrol listesi:
|
||
|
||
- `/login`, `/register`, `/forgot-password`, `/reset-password` ekranlarında dil
|
||
seçici yok.
|
||
- Owner dili yalnız `/settings/language` üzerinden değişiyor.
|
||
- Portal dili yalnız `/portal/settings/language` üzerinden ve aktif diller
|
||
arasından değişiyor.
|
||
- Dashboard, müşteri, proje, görev, takvim, finans, günlük, sohbet ve portal
|
||
sayfaları TR/EN çalışıyor.
|
||
- Custom locale draft -> active -> archived akışı deneniyor.
|
||
- RTL test locale ile sidebar, header, dialog ve form tab'ları kırılmıyor.
|
||
- Create/edit formlarında çevrilebilir alanlar aktif dil sayısı kadar tab
|
||
gösteriyor.
|
||
|
||
## 5. Rollback
|
||
|
||
Eğer migration veya backfill sonrası kritik problem çıkarsa:
|
||
|
||
1. Uygulamayı durdur.
|
||
2. Alınan yedeği geri yükle:
|
||
`pnpm db:restore`
|
||
3. Eski image/sürüm ile uygulamayı tekrar başlat.
|
||
|
||
SQLite dosyası ve upload klasörü aynı volume içinde tutulduğu için restore
|
||
öncesinde ilgili volume'un yanlışlıkla silinmediğinden emin ol.
|
||
|
||
## 6. Büyük veri fixture ölçümü
|
||
|
||
Yayın adayı image'da en az bir büyük fixture ile şu süreler ölçülmeli:
|
||
|
||
- `pnpm db:migrate`
|
||
- `pnpm i18n:backfill -- --write`
|
||
- `pnpm i18n:integrity -- --report-only`
|
||
- İlk dashboard ve portal dashboard render süresi
|
||
|
||
Ölçüm sonucunda translation liste okumalarında N+1 belirtisi görülürse ilgili
|
||
sayfanın batch resolver kullanımı tekrar denetlenmelidir.
|