Başlık
Alt Başlık
Başlık
Paragraf1
Paragraf2
Paragraf3
Başlık
Paragraf1
Paragraf2
Paragraf3
Başlık
Alt Başlık
Dil Ayarı Tanımlayıcıları (BCP 47)
en-US veya zh-Hans-CN gibi BCP 47 etiketleri dil, yazı sistemi ve bölge bilgilerini içerir. Bu etiketler her uluslararasılaştırma sisteminin temelini oluşturur ve hangi çevirilerin, biçimlerin ve kuralların geçerli olacağını belirler.
Unicode ve UTF-8
Unicode, her yazı sistemindeki her karaktere benzersiz bir kod noktası atar. UTF-8, web'de en yaygın kullanılan kodlamadır ve dil ne olursa olsun metnin doğru şekilde görüntülenmesini sağlar.
Çeviri Anahtarları
Çeviri anahtarları, dil ayarına özgü dizelere eşlenen sabit tanımlayıcılardır. Kaynak kodunuzu çevrilebilir içerikten ayırarak, geliştirme ve çeviri işlemlerinin eşzamanlı olarak yürütülmesini sağlar.
Çoğullaşma (Yoğun Bakım Ünitesi)
Dillerin çoğul kuralları birbirinden farklıdır — İngilizce’de iki biçim varken, Arapça’da altı biçim vardır. ICU MessageFormat, çoğulları, cinsiyeti ve belirli ifadeleri tek bir sözdizimiyle işler.
RTL Desteği
Arapça, İbranice ve diğer yazı sistemleri sağdan sola okunur. RTL desteği için mizanpajların aynalanması, simgelerin yönünün tersine çevrilmesi ve sol/sağ yerine CSS mantıksal özelliklerinin kullanılması gerekir.
Tarih / Numara / Para birimi
Tarih, sayı ve para birimleri yerel ayarlara göre değişiklik gösterir. Intl API ve date-fns gibi kütüphaneler, yerel ayarlara duyarlı biçimlendirme özelliği sunar; bu sayede 1.000,50, Almancada 1.000,50 olarak görüntülenir.
Başlık
Alt Başlık
JSON
Web uygulamaları (React, Vue, Angular) için en popüler seçenektir. İnsan tarafından okunabilir ve düzenli anahtar yapıları için iç içe geçirmeyi destekler. Yerleşik çoğullaşma standardı bulunmadığından, ICU MessageFormat gibi kütüphaneler bu boşluğu doldurur.
XLIFF
Araçlar arasında çeviri alışverişi için XML tabanlı endüstri standardı. Tüm profesyonel TMS platformları tarafından desteklenir. Ayrıntılı ancak zengin özelliklere sahiptir; notlar, durum takibi ve meta veriler için yerleşik destek sunar.
PO/POT (Gettext)
Python, PHP ve Ruby ekosistemlerinde kullanılan klasik açık kaynak formatı. Özel çoğul biçimleri sözdizimi ile yerleşik çoğul desteği. Çevirmenler ve çeviri araçları tarafından yaygın olarak desteklenir.
ARB
Uygulama Kaynak Paketi, Flutter ve Dart'ın standart formatıdır. JSON tabanlı olup ICU mesaj sözdizimini destekler; çoğullar ve seçimler için yerel destek sağlar. Flutter'ın gen-l10n araçları tarafından kullanılır.
.strings / .stringsdict
iOS ve macOS geliştirme için Apple platformuna özgü formatlar. .strings dosyası basit anahtar-değer çiftlerini işlerken, .stringsdict dosyası çoğullaşma kuralları için XML plist yapısını kullanır.
.resx
C# ve VB.NET uygulamaları için kullanılan .NET kaynak dosyası biçimi. XML tabanlı olup Visual Studio araçlarıyla güçlü bir entegrasyona sahiptir. Dizgiler, resimler ve diğer varlıklar için türlendirilmiş kaynakları destekler.
Başlık
Alt Başlık
Kod Tabanınızı Denetleyin
Sabit kodlanmış tüm metin dizelerini, tarih biçimlerini ve yerel ayarlara bağlı kalıpları belirleyin. Hangi bileşenlerin ve sayfaların, çıkarılması gereken kullanıcıya yönelik metinler içerdiğini belirleyin.
Dizgileri Dışa Aktar
Kullanıcılara yönelik tüm metinleri yapılandırılmış kaynak dosyalarına (JSON, XLIFF veya PO) taşıyın. Satır içi dizeleri, anahtarlara başvuruda bulunan çeviri işlev çağrılarıyla değiştirin.
Araçlarınızı Seçin
Çerçeveniz için bir i18n kütüphanesi ve işbirliği amacıyla bir çeviri yönetim sistemi (TMS) seçin; ayrıca insan, yapay zeka veya karma çeviri iş akışlarından birini tercih edin.
Entegre Et ve Gönder
i18n kütüphanenizi yönlendirme ve görüntüleme süreçlerine entegre edin, otomatik senkronizasyon için TMS'nizi CI/CD'ye bağlayın ve hızlı dağıtım için yerel ayar paketlerini CDN üzerinden dağıtın.
Başlık
Alt Başlık
Geliştirici Entegrasyonu
CLI araçlarını, SDK desteğini, Git tabanlı iş akışlarını ve CI/CD kancalarını değerlendirin. En iyi TMS platformları, çevirilerin kod değişiklikleriyle otomatik olarak senkronize kalması için doğrudan geliştirme sürecinize entegre olur.
Çeviri Belleği
Çeviri belleği, daha önce onaylanmış çevirileri saklar ve benzer ya da özdeş dizeler için öneri sunar. Bu, çeviri maliyetini düşürür, teslim süresini hızlandırır ve ürününüz genelinde tutarlılığı korur.
İşbirliği Özellikleri
İnceleme iş akışlarını, satır içi yorumları, paylaşılan sözlükleri ve onay zincirlerini arayın. Bu özellikler, çevirmenlerin, inceleyicilerin ve geliştiricilerin darboğaz ya da yanlış iletişim olmadan birlikte çalışmasını sağlar.
Yapay Zeka ve Otomasyon
Modern TMS platformları makine çevirisi önerileri, otomatik kalite kontrolleri, toplu işlemler ve akıllı yönlendirme sunar. Yapay zeka destekli iş akışları, çeviri kalitesini korurken manuel çabayı azaltır.
Başlık
Alt Başlık
React
react-intl, react-i18next ve FormatJS kullanım örnekleri
Next.js
Uygulama Yönlendiricisi, ara yazılım ve sunucu bileşeninin uluslararasılaştırılması
Vue
vue-i18n bileşim API'si ve SFC entegrasyonu
Angular
Yerleşik i18n, ngx-translate ve Transloco
Svelte
svelte-i18n, SvelteKit yönlendirme ve depolar
Flutter
intl paketi, ARB dosyaları ve gen-l10n araçları
React Native
i18next, Expo yerelleştirme ve yerel modüller
Nuxt
Otomatik yönlendirme özelliğine sahip @nuxtjs/i18n modülü
Başlık
Alt Başlık
Dize Birleştirme
Parçaları birleştirerek cümle oluşturmak, söz dizimi farklı olan dillerde sorunlara yol açar. Bunun yerine yer tutucular içeren ICU MessageFormat'ı kullanın.
Sabit kodlanmış dizeler
Kullanıcılara yönelik metinleri doğrudan kaynak koduna yerleştirmek, kodda değişiklik yapılmadan çeviriyi imkansız hale getirir. Her bir metin dizesini en başından itibaren kod dışına taşıyın.
Çoğulları göz ardı etmek
Tekil ve çoğul için kullanılan basit if/else yapısı yalnızca İngilizce'de işe yarar. Birçok dilde, uygun ICU çoğul kuralları gerektiren birden fazla çoğul biçimi vardır.
Sonradan Yapılan Çeviri
Ürün piyasaya sürüldükten sonra uluslararasılaştırma özelliğini sonradan eklemek, maliyetli bir yeniden yapılandırma gerektirir. Başlangıçtan itibaren uluslararasılaştırmaya uygun tasarım yapmak, zamandan tasarruf sağlar ve mimari borç oluşmasını önler.
Başlık
Alt Başlık
- Kullanıcılara yönelik tüm metinler kaynak dosyalarına taşınmıştır
- Yerel ayar algılama özelliği eklendi (tarayıcı, URL, kullanıcı tercihi)
- Tüm hedef diller için çoğul hale getirme işlemi ICU MessageFormat ile gerçekleştirilmiştir
- Tarih, saat, sayı ve para birimi biçimlendirmeleri için Intl API veya eşdeğer bir yöntem kullanılır
- RTL düzen desteği, CSS mantıksal özellikleriyle test edildi
- Eksik çeviriler için yapılandırılmış yedek dil ayarı
- Çeviri anahtarları tutarlı bir adlandırma kuralına uyar
- CI iş akışı, eksik veya kullanılmayan çeviri anahtarlarının bulunmadığını doğrular
Başlık
Alt Başlık
- Sözde
- Görsel
- Otomatik
- Dilbilimsel
- Genişleme
Başlık
Alt Başlık
i18n ile L10n arasındaki fark nedir?
Uluslararasılaştırma (i18n), yazılımın birden fazla dil ve bölgeyi destekleyebilmesi için tasarlanmasına yönelik mühendislik sürecidir. Yerelleştirme (L10n) ise metinlerin çevrilmesi, biçimlerin ayarlanması ve kültürel uygunluğun sağlanması dahil olmak üzere, söz konusu yazılımın belirli bir yerel ayara uyarlanmasına yönelik içerik sürecidir. i18n, kod tabanınızda tek seferlik bir işlemdir; L10n ise desteklediğiniz her yerel ayar için gerçekleştirilir.
Hangi i18n kütüphanesini kullanmalıyım?
En uygun kütüphane, kullandığınız çerçeveye göre değişir. React için react-intl (FormatJS) ve react-i18next en yaygın olarak kullanılanlardır. Vue geliştiricileri genellikle vue-i18n'i kullanır. Angular, Transloco gibi topluluk kaynaklı seçeneklerin yanı sıra yerleşik i18n desteğine sahiptir. Svelte projeleri ise svelte-i18n'i kullanır. Her seçeneği, paket boyutu, ICU desteği ve render modelinizle ne kadar iyi entegre olduğu açısından değerlendirin.
Başlangıçta kaç dilde hizmet vermeliyim?
Mevcut kullanıcı verilerinize veya hedef pazar araştırmalarınıza dayanarak, öncelikle iki ya da üç adet yüksek etki yaratacak dille başlayın. Bu, i18n mimarinizi, çeviri iş akışınızı ve kalite kontrol sürecinizi yönetilebilir bir ölçekte test etmenizi sağlar. Güvenilir bir iş akışı oluşturduktan sonra, analitik verileri kullanarak bir sonraki aşamada hangi dilleri ekleyeceğinize öncelik vererek, diğer dillere de genişleyin.
Uygulamam için makine çevirisini kullanabilir miyim?
Hibrit bir yaklaşım oldukça etkili olabilir: İlk taslaklar ve hacimli, kritik önemi düşük içerikler için makine çevirisini kullanın; ardından pazarlama metinleri, hata mesajları ve hukuki metinler gibi kalitenin kritik öneme sahip metinleri insan çevirmenlere inceletin. Modern sinir ağı tabanlı makine çevirisi önemli ölçüde gelişmiştir, ancak nüanslar, marka sesi ve kültürel doğruluk açısından insan denetimi hâlâ vazgeçilmezdir.
Yalancı yerelleştirme nedir?
Sözde yerelleştirme, metnin anlamını değiştirmeden metni aksanlı veya genişletilmiş karakterlerle değiştiren (örneğin, "Hello" ifadesini "[~Hellllo~]" haline getiren) bir test tekniğidir. Bu teknik, geliştiricilerin gerçek çeviriler hazır olmadan önce sabit kodlanmış dizeleri, metin kesintilerini ve mizanpaj sorunlarını tespit etmelerine yardımcı olur. Çoğu uluslararasılaştırma (i18n) kütüphanesi ve TMS aracı, sözde yerelleştirilmiş çıktının otomatik olarak oluşturulmasını destekler.
Dinamik içeriğin yerelleştirilmesini nasıl yapabilirim?
Dizgileri birleştirmek yerine, yer tutucular için ICU MessageFormat yer tutucularını kullanın (ör. 'Merhaba, {name}'). Çoğullar için, her dilin kurallarına uyum sağlayan ICU çoğul sözdizimini kullanın. Dilbilgisi kuralları dilden dile farklılık gösterdiğinden, cümleleri parçalardan oluşturmaktan kaçının. Zengin metinlerde, çevirmenlerin işaretlemeyi bozmadan HTML öğelerinin sırasını değiştirebilmelerini sağlayan etiketli yer tutucular kullanın.