Uygulamanıza veya Web Sitenize Birden Fazla Dil Nasıl Eklenir
Bir uygulamaya birden fazla dil eklemek için, arayüzdeki tüm metinleri dil başına bir çeviri dosyasına taşıyın, bunları bir i18n kütüphanesiyle yükleyin ve seçimi hatırlayan bir dil değiştirici ekleyin. Arama motorlarında bulunmasını istediğiniz herkese açık sayfalar için her dile /fr/ gibi ayrı bir URL verin ve sürümleri hreflang etiketleriyle birbirine bağlayın. Ardından çoğu kişinin unuttuğu kısımları ele alın: tarihler, sayılar ve para birimleri, bazı dillerde daha uzun metinler, sağdan sola yazılan diller ve veritabanınızda saklanan içerik.
Duyacağınız terimler
- Uluslararasılaştırma (i18n): Kodu herhangi bir dili destekleyecek şekilde hazırlamak; sabit kodlanmış metin olmaması, yerel ayara duyarlı biçimlendirme ve esnek yerleşimler. "18" sayısı, i ile n harfleri arasındaki harf sayısını gösterir.
- Yerelleştirme (l10n): Uygulamayı belirli bir dil veya pazar için uyarlamak; çoğunlukla çeviri, bazen de para birimi, görseller ve hukuki metinler.
- Yerel ayar (locale): Bir dil ve isteğe bağlı olarak bir bölge; örneğin
en-GBveyapt-BR.
I18n çalışmasını bir kez yapın; ardından her yeni dil eklemek büyük ölçüde yalnızca çeviri işi olur.
Seçenekler ve ödünleşimler
| Yaklaşım | Nasıl çalışır | Uygun olduğu durum | Ödünleşim |
|---|---|---|---|
| i18n kütüphanesi + çeviri dosyaları (ör. react-i18next, next-intl, vue-i18n) | Metinler dil başına JSON dosyalarında durur; bileşenler anahtarları arar | Çoğu uygulama | İlk yeniden yapılandırma; bakımı yapılacak çeviriler |
| Çeviri yönetim sistemi (ör. Crowdin, Lokalise, Phrase) | Çevirmenler için barındırılan bir editör, dosyalarınızla senkronize | Çok dil, birkaç çevirmen | Ücretli; kurulacak bir araç daha |
| Derleme zamanında makine veya yapay zekâ çevirisi | Bir API ile taslak çeviriler üretilir, sonra gözden geçirilir | Çok sayıda dile hızlıca ulaşmak | Kalitenin kontrol edilmesi gerekir; API maliyetleri |
| Tarayıcı veya widget ile otomatik çeviri | Ziyaretçinin tarayıcısı sayfayı anında çevirir | Kontrolünüzde olmayan durumlar | Kalite kontrolü yok; çevrilmiş sayfalar sizin olarak dizine eklenmez |
| Dil başına ayrı siteler | Her pazar için site çoğaltılır | Çok farklı pazarlar | Her şey iki kez bakım gerektirir |
Çoğu uygulama için çeviri dosyalarıyla standart bir i18n kütüphanesi doğru temeldir. İsterseniz makine veya yapay zekâ çevirisiyle taslak çeviriler oluşturun, ardından müşterilerin en çok gördüğü metinleri akıcı konuşmacılarla gözden geçirin.
Çok dilli bir uygulamanın parçaları
Çeviri dosyaları
<h1>Tekrar hoş geldiniz</h1> yazmak yerine kod t('dashboard.welcome') yazar ve her yerel ayarın bir dosyasında metin bulunur:
{
"dashboard": {
"welcome": "Tekrar hoş geldin, {{name}}",
"items_one": "{{count}} öğe",
"items_other": "{{count}} öğe"
}
}
Değişkenler için cümle parçalarını birleştirmek yerine yer tutucular kullanın; kelime sıralaması diller arasında farklıdır. Ayrıca kütüphanenin çoğul kurallarını kullanın: İngilizcede iki biçim vardır (1 öğe, 2 öğe), ancak bazı dillerde üç, dört ya da daha fazla biçim bulunur.
Tarih, sayı ve parayı biçimlendirme
Bunları elle biçimlendirmeyin. Tarayıcının yerleşik Intl API'si her yerel ayar için biçimlendirme yapar: İngilizcede 1,234.5 olan değer Almancada 1.234,5 olur; tarihler gün-ay ya da ay-gün sırasıyla değişir; para birimi sembolleri yer değiştirir. Tarihleri UTC olarak saklayın, parayı para birimi koduyla birlikte sayı olarak tutun ve yalnızca gösterim için biçimlendirin.
Esneyen yerleşim
Çevrilmiş metin çoğu zaman İngilizceden daha uzundur; özellikle Almanca ve Fince kelimeler. Sabit genişlikli düğmelerden ve kesilmiş etiketlerden kaçının ve en uzun dilinizle test edin.
Sağdan sola diller
Arapça, İbranice, Farsça ve Urduca sağdan sola okunur. Bu yerel ayarlar için sayfada dir="rtl" ayarlayın ve yerleşimin kendini aynalaması için CSS mantıksal özelliklerini kullanın (margin-left yerine margin-inline-start; Tailwind'de ml-4 yerine ms-4). Ok gibi yön belirten simgeler de çevrilmelidir.
Dil değiştirici ve algılama
Her sayfada, dillerin kendi adlarıyla ("Deutsch", "Français", "العربية") etiketlenmiş bir değiştirici gösterin; bayrak kullanmayın, çünkü bayraklar ülkeleri temsil eder, dilleri değil. İlk ziyarette tarayıcının tercih ettiği dili algılayıp bir sürümü önerin, ancak ziyaretçinin açık seçimi öncelikli olsun ve hatırlansın.
URL'ler ve SEO
Arama sonuçlarında çıkmasını istediğiniz sayfalar için her dilin kendi URL'si olmalıdır. Eylül 2026 itibarıyla Google'ın çok dilli siteler için rehberi şöyledir:
- Dile göre ayrı URL'ler: alt dizinler (
example.com/fr/) en basit yoldur; alt alan adları ve ülke alan adları da çalışır. URL parametreleri (?lang=fr) önerilmez. - Dili yalnızca çerez veya tarayıcı ayarıyla değiştirmeyin; Google'ın tarayıcısı diğer sürümleri hiç görmeyebilir.
- Dile göre otomatik yönlendirme yapmayın; bunun yerine sürümler arasında bağlantı verin.
- Hangi sayfaların birbirinin çevirisi olduğunu Google'a bildirmek için hreflang kullanın. Her sürüm kendisini ve diğer tüm sürümleri listelemelidir; aksi halde açıklamalar yok sayılabilir. Yedek sayfa için
x-defaultekleyin. - Google bir sayfanın dilini
langveya hreflang'dan değil, görünen içeriğinden algılar; bu yüzden yalnızca menüyü değil, tüm sayfayı çevirin.
Yine de her sürümde <html lang="fr"> ayarlayın: ekran okuyucular doğru telaffuzu seçmek için bunu kullanır ve bu bir erişilebilirlik gereksinimidir.
Giriş yapmış uygulama ekranlarının dizinlenmesi gerekmez; bunlar için dil tercihini kullanıcı profilinde saklamak yeterlidir. Herkese açık sayfaların önce taranmasını sağlamak için yapay zekâ ile oluşturulmuş web siteleri için SEO rehberine bakın.
Veritabanınızdaki içerik
Arayüz metinleri dosyalarda durur; ürün adları, blog yazıları ve kategoriler gibi içerik ise veritabanında tutulur. İki yaygın yöntem:
- Bir çeviri tablosu:
product_translations (product_id, locale, name, description). Temiz bir yapıdır ve çok dile ölçeklenir. - Alan başına bir JSON sütunu:
name: {"en": "...", "fr": "..."}. Birkaç dil için daha basittir.
Bir çeviri eksik olduğunda ne olacağına karar verin; genellikle boş alan göstermek yerine varsayılan dile geri dönülür.
E-postalar ve bildirimler
Her kullanıcının dilini saklayın ve bunu e-postalar, bildirimler ve PDF'ler için de kullanın. Uygulamayı çevirip karşılama e-postasının hâlâ İngilizce gittiğini unutmak kolaydır.
İşe yarayan istemler
react-i18next ile i18n ekle. Kullanıcıya görünen her metni ad alanlı anahtarlarla locales/en.json dosyasına taşı; metin birleştirme yerine enterpolasyon ve çoğul kuralları kullan; tarihleri, sayıları ve fiyatları geçerli yerel ayara göre Intl ile biçimlendir. Henüz hiçbir kelimeyi değiştirme.
Fransızca ve Almanca ekle. Herkese açık pazarlama sayfaları /fr/ ve /de/ URL öneklerini alsın, İngilizce kök dizinde kalsın; her sayfada hreflang bağlantıları olsun (kendine referans ve x-default dahil) ve her sayfada html lang ayarlansın. Her dilin yerel adını gösteren bir dil değiştirici ekle. Giriş yapmış sayfalar için dili kullanıcı profilinde sakla.
Arapça için sağdan sola desteği ekle: Arapça için dir="rtl" ayarla, sol/sağ kenar boşluklarını ve dolgularını mantıksal özelliklerle değiştir, yön belirten simgeleri aynala ve formların ve tabloların hâlâ doğru okunduğunu kontrol et.
Adım adım
- İlk ek dilinizi seçin: gerçek talebe göre: ziyaretçileriniz veya müşterileriniz nerede?
- Kodu uluslararasılaştırın: metinleri dosyalara taşıyın, çoğul kuralları ve
Intlbiçimlendirmesini ekleyin. Bunu yalnızca İngilizce ile yayınlayın ve hiçbir şeyin değişmediğini kontrol edin. - Herkese açık sayfalar için URL yapısına karar verin ve hreflang ekleyin.
- Çevirin: makine veya yapay zekâ çevirisiyle taslak hazırlayın, sonra akıcı bir konuşmacıyla gözden geçirin. Çevirmenlere bağlam verin; "Book" kelimesi bir ekranda isim, başka bir ekranda fiildir.
- Veritabanı içeriğini çevirin ve yedek dilleri belirleyin.
- Geri kalanı yerelleştirin: e-postalar, hata mesajları, hukuki sayfalar, üzerinde metin bulunan görseller.
- Her dili telefon genişliğinde ve gerekiyorsa sağdan sola yerleşimle test edin.
- Yeni özellikler çevirilerle birlikte yayınlansın diye bir süreç kurun; aylar sonra değil.
Sık yapılan hatalar
- Cümleleri birleştirmek (
"You have " + n + " messages"); bu diğer dillerde bozulur. - Bileşenlerde, hata mesajlarında ve doğrulama metinlerinde kalan sabit kodlu metinler.
- Tarihleri ve fiyatları elle biçimlendirmek.
- Diller için bayrak kullanmak ve insanları yanlış sürümde tutan otomatik yönlendirmeler.
- Dizinlenmesini istediğiniz sayfalarda tüm diller için tek bir URL.
- Eksik hreflang geri bağlantıları; Google bu açıklamaları yok sayar.
- Arayüzü çevirip içeriği çevirmemek ya da tersi.
- Fiyatlandırma, hukuki metin ve ödeme sayfalarında gözden geçirilmemiş makine çevirisi.
Çok dilli kontrol listesi
- Kullanıcıya görünen sabit kodlu metin yok; çoğul kuralları ve yer tutucular kullanılıyor
- Tarihler, sayılar ve para birimleri
Intlile biçimlendiriliyor - Her sayfada yerel adlarla dil değiştirici var; seçim hatırlanıyor
- Herkese açık sayfalar için dile göre ayrı URL'ler var; zorunlu yönlendirme yok
- Her sürümde kendisi ve x-default dahil hreflang var
-
html lang(ve gerekiyorsadir="rtl") sayfa başına ayarlanmış - Veritabanı içeriği makul yedeklerle çevrilmiş
- E-postalar ve bildirimler kullanıcının dilinde gönderiliyor
- Müşterilere görünen metin akıcı bir konuşmacı tarafından gözden geçirildi
Mythex'te birden fazla dil
Mythex'te dil eklemek için sohbete istek yazarsınız; ayrı bir çeviri paneli yoktur, bu yüzden yukarıdaki istemler olduğu gibi çalışır. İlk olarak i18n adımını yapın ve dil eklemeden önce Önizleme'de kontrol edin; bu büyük bir yeniden yapılandırmadır ve bir sohbet kontrol noktası, bir şey bozulursa geri dönebileceğiniz bir nokta sağlar (sohbet ve kontrol noktaları). Uygulamanın içeriği bir yapay zekâ veya çeviri API'si ile otomatik çevirmesini istiyorsanız, bu kendi API anahtarınızı kullanır ve proje ayarlarında saklanır (ortam değişkenleri ve sırlar); LLM API'lerini nasıl kullanırsınız rehberi maliyetleri açıklar. Yeni diller hazır olduğunda tekrar yayınlayın.
Sorular
i18n ile yerelleştirme (l10n) arasındaki fark nedir?
Uluslararasılaştırma (i18n), kodu birden fazla dili destekleyecek şekilde hazırlamaktır: sabit kodlanmış metin olmaması, yerel ayara duyarlı tarih ve sayılar, uzun kelimeleri ve sağdan sola yazılan dilleri destekleyen yerleşimler. Yerelleştirme (l10n) ise uygulamayı tek bir dil veya pazar için uyarlama işidir; esas olarak çeviriyi kapsar.
Uygulamamı çevirmek için makine çevirisini veya yapay zekâyı kullanabilir miyim?
İlk taslak için evet; günümüzün makine ve yapay zekâ çevirileri arayüz metinlerinde oldukça iyidir. Müşterilere görünen her şeyi, özellikle hukuki metinleri, fiyatlandırmayı ve pazarlama metinlerini akıcı bir konuşmacının gözden geçirmesini sağlayın; ton ve küçük hatalar bu alanlarda önemlidir.
Her dilin kendi URL'si olmalı mı?
Arama sonuçlarında çıkmasını istediğiniz herkese açık sayfalar için evet. Google, dilin çerez veya tarayıcı ayarıyla değiştirilmesi yerine /fr/ ve /de/ gibi dile özgü ayrı URL'lerin kullanılmasını önerir; aksi halde tarayıcısı yalnızca tek bir sürümü görebilir.
Ziyaretçileri tarayıcı diline göre otomatik yönlendirmeli miyim?
Zorlamak yerine önerin. Google, otomatik dil yönlendirmelerine karşı çıkar, çünkü bunlar insanların ve tarayıcıların diğer sürümlere ulaşmasını engelleyebilir. Eşleşen dili öneren küçük bir bildirim ve her sayfada görünür bir dil değiştirici gösterin.