Bu kılavuz webapp/i18n/ içinde web uygulamasına yeni bir arayüz dili ekler. Dil listesi veridir; bu yüzden web uygulaması kodu değişmez. Kılavuz ayrıca web sözlüğünden gelmeyen ve bu yüzden tanımlandıkları yerde çevrilene kadar İngilizce kalan metinleri listeler. Arka plan uluslararasılaştırma ve diller sayfasındadır.
Ön koşullar¶
- Dilin tarayıcıların bildirdiği iki harfli bir kodu vardır, örneğin
de.pick()tarayıcı dilinin ilk iki harfini manifesto kodlarıyla karşılaştırır (webapp/js/i18n.js:46-52). webapp/i18n/içindeki dosyaları düzenleyebilir ve web uygulamasını dağıtabilirsiniz.
Adımlar¶
-
webapp/i18n/en.jsondosyasınıwebapp/i18n/<code>.jsonolarak kopyalayın. Dosya adı dil kodu olmalıdır, çünküsetLang../i18n/<code>.jsondosyasını yükler (webapp/js/i18n.js:74-78). -
Her değeri çevirin ve her anahtarı koruyun.
en.json2.853 anahtar içerir; eksik bir anahtar ekranda anahtarın kendisini gösterir (webapp/js/i18n.js:101-106). -
Her
{name}yer tutucusunu çevrilen metnin içinde değiştirmeden bırakın.t()yer tutucuları adlarına göre doldurur (webapp/js/i18n.js:107-108). -
Çoğul biçimli metinler için dilinizin kullandığı çoğul kategorilerini alt anahtarlar olarak verin (
one,two,few,many,other).tp()kategoriyiIntl.PluralRulesile seçer veotherdeğerine geri düşer (webapp/js/i18n.js:112-127). -
error.<code>altındaki hata metinlerini çevirin. Bir anahtar eksikse bunun yerine sunucunun İngilizce iletisi gösterilir (webapp/js/gen-api.js:16-27). -
webapp/i18n/languages.jsondosyasına kodu ve dilin kendi adını içeren bir girdi ekleyin. Dizecodevenametaşımayan girdiler yok sayılır (webapp/js/i18n.js:32-44).
webapp/i18n/languages.json:1-4 içindeki var olan girdilerden yeni dil için bir yer tutucuyla kurulan örnek manifesto:
json
[
{ "code": "tr", "name": "Türkçe" },
{ "code": "en", "name": "English" },
{ "code": "<code>", "name": "<native name>" }
]
- Dağıtın. Varlık damgası
webapp/içindeki her dosya üzerinden bir özettir; bu yüzden yeni dosyalar yeni URL'ler alır ve tarayıcılar onları sonraki sayfa yüklemesinde yükler (src/cluster_erp/core/asset_stamp.py:30-42). Bkz. önbellek ve varlık damgası.
Sonucu doğrulayın¶
- Ayarlar › Dil yeni girdiyi kendi dilindeki adıyla listeler (
webapp/js/home.js:3670-3712). - Giriş ekranındaki dil düğmesi onun da içinden döner (
webapp/js/main.js:152-159). - Seçildikten sonra kök öğenin
langniteliği yeni koddur ve statik metinler hemen değişir (webapp/js/i18n.js:79-82). - Bileşenlerdeki tarihler
Intl.DateTimeFormatile yeni yerel ayarı izler (webapp/js/prefs.js:156-170).
Sorun giderme¶
| Belirti | Koddaki neden | Çözüm |
|---|---|---|
| Dil sunulmuyor | Manifesto girdisinde dize code veya name yok ya da manifesto geçerli JSON değil (webapp/js/i18n.js:32-44) |
Girdiyi düzeltin |
| Dili seçmek hiçbir şeyi değiştirmiyor | <code>.json yüklenemediğinde setLang hata fırlatır (webapp/js/i18n.js:76-77) |
Dosya adını ve dosyanın geçerli JSON olduğunu denetleyin |
| Ekranda anahtarlar görünüyor | Anahtar yeni dosyada yok (webapp/js/i18n.js:106) |
Anahtarı ekleyin |
| Modüllerden gelen etiketler İngilizce kalıyor | Metadata etiketleri Python modül metadata'sındaki sözlüklerdir; resolveLabel İngilizceye geri düşer (webapp/js/meta.js:284-288) |
Dili modül metadata etiketlerine ekleyin |
| Referans satırları İngilizce kalıyor | langLabel label_<code> sütunlarını okur ve label_en değerine geri düşer (webapp/js/meta.js:418-421) |
Dil için sütun verisini sağlayın |
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| language dictionary | <code>.json |
Noktalı anahtarlarla düzenlenmiş, tek bir dilin çevrilmiş metinlerinin dosyası. | dil sözlüğü | webapp/js/i18n.js:76 |
İlgili sayfalar¶
- Web uygulaması platformu
- Uluslararasılaştırma ve diller
- Veri güdümlü diller
- Referans verisi ve çekirdek i18n
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.