Yerelleştirme (i18n)
cMind tamamen yerelleştirilebilir ve cTrader'ın kendisinin desteklediği aynı 23 dilde gönderilir, böylece bir yatırımcı platformu — ve bu belgeleri — kendi dilinde kullanır. İngilizce yedektir; eksik herhangi bir çeviri, boş bir ekran veya ham bir anahtar göstermek yerine zarifçe İngilizceye iner.
Desteklenen diller
Arapça (RTL), Çince (Basitleştirilmiş), Çekçe, İngilizce, Fransızca, Almanca, Yunanca, Macarca, Endonezce, İtalyanca, Japonca, Korece, Malayca, Lehçe, Portekizce (Brezilya), Rusça, Sırpça, Slovakça, Slovence, İspanyolca, Tayca, Türkçe, Vietnamca.
Tek doğruluk kaynağı Core.Constants.SupportedCultures'tır — istek-kültürü ara yazılımı, dil değiştirici,
kaynak-parite testi ve sabit-kodlanmamış-dize kapısının tümü ondan okur. Bir dil eklemek, orada bir satırlık
bir değişiklik artı kaynak dosyalarıdır.
Nasıl çalışır (Blazor Server)
- Kaynaklar. UI dizeleri
src/Web/Resources/Ui.resx'te (İngilizce temel) artı dil başına birUi.<culture>.resx'te yaşar. Bileşenler onlarıIStringLocalizer<Ui>aracılığıyla okur —@L["key"], asla bir değişmez..resxdosyaları, çevirmen-dostu doğruluk kaynağı olantools/i18n/ui-translations.json'dan (pwsh tools/i18n/gen-resx.ps1) oluşturulur. - Kültür çözümü.
RequestLocalizationMiddleware, kültürü önce.AspNetCore.Cultureçerezinden, sonra tarayıcınınAccept-Language'ından, sonra İngilizceden seçer. - Değiştirme. Uygulama-çubuğu dil değiştirici (ve Settings → Language bölümü),
GET /set-cultureuç noktasına gider — Blazor devresi dışında tam bir yeniden yükleme, çünkü bir devre kültürü canlı değiştiremez. Çerezi yazar ve giriş yapmış bir kullanıcı için seçimi profiline (UserProfile.Locale) kalıcılaştırır; yeniden yükleme, seçilen dilde yeni bir devre başlatır. - Kalıcılık ve giriş. Kaydedilen profil yereli, girişte kültür çerezine geri yazılır, böylece bir kullanıcı her cihazda kendi dilinde iner.
- Sağdan-sola. Arapça (ve gelecekteki herhangi bir RTL dili)
<html dir="rtl">ayarlar ve düzeni MudBlazor'unMudRTLProvider'ında sarar, tüm kabuğu yansıtır. - ICU. Web host'u ICU etkin çalışır (
InvariantGlobalization=false); tel/ayrıştırma koduCultureInfo.InvariantCulture'da kalır, böylece yalnızca kültür-başına UI biçimlendirmesi etkilenir — asla bir backtest veya CSV.
Kapı — sabit-kodlanmış UI metni yok
Yeni kullanıcıya-dönük dizeler, kapsanan kapsamda yerelleştirilmemiş olarak birleştirilemez:
- Derlemeyi-başarısız-kılan bir mimari-koruma testi (
NoHardcodedUiTextTests), taşınan.razordosyalarını tarar ve@L["…"]araması olmayan herhangi bir değişmez, metin-taşıyan öznitelikte (Label,Text,Title,Placeholder,HelperText,aria-label,alt) başarısız olur. - Bir kaynak-parite testi (
ResourceParityTests), herhangi bir dil bir anahtarı kaçırırsa veya boş bir değer gönderirse derlemeyi başarısız kılar — her dilde her zaman her anahtar bulunur.
Bir dize ekleme veya değiştirme
tools/i18n/ui-translations.json'da anahtarı her kültür için ekleyin/düzenleyin..resx'i yeniden oluşturun:pwsh tools/i18n/gen-resx.ps1.- Bileşende
@L["your.key"]ile referans verin. dotnet test— parite ve sabit-kodlanmış-metin kapıları sizi dürüst tutar.
Belge yerelleştirmesi
Bu belgeler de yerelleştirilmiştir. Docusaurus i18n, navbar'da bir yerel açılır menüsü ve Arapça için RTL ile
tüm 23 yerel için yapılandırılmıştır (website/i18n/). Bir yerelin çeviri dosyalarını
npm run write-translations -- --locale <code> ile iskeletleyin ve website/i18n/<code>/ altında çevirin.
Yerelleştirme yönergesi gereği, herhangi bir belgeyi eklemek veya değiştirmek, her yereli aynı değişiklikte güncellemek anlamına gelir.