5 puan yazan GN⁺ 2025-05-20 | 1 yorum | WhatsApp'ta paylaş
  • IP tabanlı dil ayarı, hatalı bir varsayıma dayanan bir özelliktir
  • IP adresi yalnızca konumu gösterir; kullanıcının gerçek dil tercihini yansıtmaz
  • Accept-Language başlığı, dil tercihi bilgisini doğru şekilde iletir
  • UI dili, güvenilir bir sinyal olan tarayıcı başlığı temel alınarak ayarlanmalıdır
  • En önemli ilke, kullanıcının dil seçme hakkına ve deneyimine saygı göstermektir

IP ile tahmin edilen dil ayarlarının sınırları

  • Hâlâ IP coğrafi konumu (GeoIP) ile kullanım dilini belirlemek yanlış bir varsayımdır
  • IP adresi yalnızca isteğin konum bilgisini sağlar
  • Kullanıcının gerçekten tercih ettiği veya anladığı dili belirleyemez
  • VPN, yurt dışı seyahati, yurt dışında yaşama, birden çok resmî dile sahip ülkeler gibi çeşitli durumlarda sık sık başarısız olur
  • Bu yaklaşım akıllılık değil, rahatsızlık ve kafa karışıklığı yaratır

Resmî dil sayısı ile gerçek hayat arasındaki fark

  • Ülke ve IP bilgisi, dille bire bir eşleşmez
    • Belgium'da 3, Switzerland'da 4, India'da 22, Canada'da resmî olarak 2 dil vardır; pratikte ise bunlar çok dilli ülkelerdir
  • Kullanıcı o ülkede yaşıyor, ziyaret ediyor olabilir ya da trafiği tesadüfen o ülke üzerinden yönlendiriliyor olabilir
  • Yalnızca basit ülke bilgisine dayanarak tek bir UI dilini zorla göstermek yanlıştır

Kötü mühendisliğe bir örnek

  • Hatalı verilere dayanmak tembel bir geliştirme yaklaşımıdır
  • “Büyük web siteleri de bunu yapıyor” mazereti doğru değildir
  • Doğru şekilde ele alınamayacaksa, hiçbir şey yapmamak daha iyidir

Accept-Language başlığının değeri

  • Birçok kullanıcı, örneğin VPN kullanımı nedeniyle yeni bir dilin zorla gösterilmesi yüzünden rahatsızlık yaşar
  • Tüm tarayıcılar Accept-Language başlığını gönderir
    • Dil tercihi, kullanıcının OS veya tarayıcı ayarlarına göre belirlenir
    • Kullanıcı isterse bu değeri doğrudan ayarlayabilir, değiştirebilir
    • Örnek: Accept-Language: en-US,en;q=0.9,de;q=0.8
  • Bu başlık doğru, ücretsiz ve zaten yerleşik bir bilgidir; lisans veya ek bakım gerektirmez

Doğru dil işleme yöntemi

  • Ekran çözünürlüğü ya da renk gibi, dile de kullanıcının ortamının bir parçası olarak saygı gösterilmelidir
  • İngilizce kullanıcıya Fransa'da İngilizce yerine başka bir dilin, Brüksel'deki Fransızca kullanıcıya Felemenkçenin, Hong Kong VPN kullanan kullanıcıya ise Çincenin gösterilmesi gibi saçma atamalar sık görülür
  • Kullanıcı şikâyetleri, hizmetten ayrılma ve UI içinde çözüm ararken geçici çarelere başvurma gibi sorunlar ortaya çıkar
  • Bu hatalar, dil kararını güvenilmez IP verisine dayandırmaktan kaynaklanır

Pratik çözüm yolları

  • Accept-Language değerini okuyun
  • Bu değere saygı gösterin
  • İsterse kullanıcının dili doğrudan değiştirebilmesini sağlayın (tercih, çerezde veya URL parametresinde saklanabilir)
  • GeoIP bilgisini yalnızca para birimi, teslimat, yasal unsurlar için kullanın; dilde kullanmayın

Sonuç

  • İnsanların kullandığı bir yazılımda, kullanıcı tercihleri tahmin edilmemelidir
  • Ya doğru şekilde uygulayın, ya da hiç dil belirleme özelliği sunmayın

1 yorum

 
GN⁺ 2025-05-20
Hacker News görüşleri
  • Accept-Language başlığını yok sayan web sitelerinin gerçekten sinir bozucu bir sorun olduğunu düşünüyorum. Çok dilli web siteleri çoğu zaman dil değiştirme düğmesini veya dil listesini bile mevcut dile çevirip kafa karışıklığı yaratıyor; bu konuda Vikipedi’nin standart bir örnek olduğunu düşünüyorum. Vikipedi açık bir çok dilli simge, her dilin adını o dilde gösteren bir liste ve en üstte önerilen dilleri gösterme yöntemini kullanıyor. Dil önceden tahmin edilmemeli. Vikipedi gibi yapmak yardımcı olur.

    • Arama motoru üzerinden istediğim sayfaya girdiğimde bir anda ülke seçmemi isteyen bir modal pencerenin çıkmasından nefret ediyorum; onu seçince de bölgesel sitenin anasayfasına zorla yönlendiriyorlar. Bazı sitelerde kapatma düğmesi (X) var ama çoğunda yok, bu da daha da sinir bozucu.

    • Vikipedi’nin dil listesinin mutlaka “alfabetik sırada” olduğunu sanmıyorum. Örneğin önerilen diller olarak bazen "中文", "Italiano" üstte geliyor ve geri kalanı coğrafi ya da yazı sistemi ölçütüne göre gruplanmış gibi görünüyor. Kendi dilinin gerçek alfabe sırası olmasa bile Vikipedi yerelleştirmeyi iyi yapıyor. Önemli olan nokta, dil adlarını kendi dillerinde gösterirken “doğru” alfabetik sıralama kavramının karmaşık olması.

    • Vikipedi, kullanıcının daha önce seçtiği dili hatırlayıp onu en üstte gösteriyor. Gerçek kullanıcı deneyimi bu.

    • YouTube uygulamasında dilin bir anda Amharic’e döndüğünü yaşadım. Google destek belgesine bakınca English düğmesini anlatıyorlardı ama Amharic bilmeyen biri için bunun hiçbir anlamı yoktu. iPhone çeviri uygulaması da bu dili tanımıyordu. Eğer evrensel bir çok dilli simge olsaydı, böyle bir durum kolayca çözülebilirdi.

    • İronik biçimde, Universal Language Selector (U.S.L) bile sonuçta önerilen dili büyük ölçüde kullanıcının IP tabanlı ülke bilgisine göre belirliyor. Bu yöntem çoğu zaman doğru değil. U.S.L SSS’ye göre önce IP’den çıkış ülkesi belirleniyor, ardından başlıca dil adayları öneriliyor.

  • Herkesin yalnızca tek bir dil kullandığını varsayan tasarımlardan hoşlanmıyorum. Ben dört dili rahatça okuyabiliyorum ve genelde çeviri yerine özgün dili tercih ediyorum. IP tabanlı dil tahmini çok sık yanlış çıkıyor. Ben desteklenen dili zaten ayarladıysam buna saygı duyulmalı. YouTube’da otomatik yapay zeka dublajı varsayılan olarak açılıyor; biraz dinleyip geri dönerek kapatma sürecini tekrar tekrar yaşıyorum. Çok zaman almıyor ama gerçekten sinir bozucu bir deneyim.

    • YouTube yapay zeka dublajının kalitesi gerçekten korkunç. Beş dakika sonra videodaki sesin asıl ses olmadığını ancak fark ettim. Video başlığının çevrilmesinden de nefret ediyorum. İngilizce konuşulan bir video izliyorum ama başlık alakasız bir dilde oluyor.

    • Google’da tercih edilen dili İspanyolca olarak ayarlasam bile YouTube her şeyi otomatik olarak İngilizceye çeviriyor. İspanyolcamı geliştirmek için özgün içerik izlemek istiyorum ama YouTube bunu zorlaştırıyor.

  • YouTube’un video başlıklarını ayarlı dilime otomatik çevirmesi gerçekten çok sinir bozucu. İngilizce anlayabiliyorum; durduk yere çeviriye ihtiyacım yok.

    • Eğer yazıyı anlayamayacağım bir dilse, büyük ihtimalle o video zaten bana yönelik değildir. Uluslararası videoların çoğu zaten İngilizce sunuluyor; yazar gerçekten isteseydi muhtemelen çevirisini de koyardı. Ayrıca video başlıkları bağlamdan yoksun olduğu için düzgün çevrilemiyor. Eskiden Portekizce "Vamos assistir uma conexão com o passado" başlıklı bir video aslında "Let's play A Link to the Past" idi; İngilizce başlığı anlayabilmek için tekrar çevirip tahmin yürütmek gerekiyordu. Böyle bir özellik erişilebilirliği artırabilir ama en azından kapatma seçeneği olmalı.

    • YouTube algoritması bu tür özelliklerin kullanımını teşvik ediyor ve erişilebilirlik gerekçesiyle ödüllendiriyor olabilir ama çirkin makine çevirisi Norveççe başlık yerine İngilizce başlığı tercih ederim. Benim deneyimimde böyle makine çevirisi başlıklar görünce o kanalın artık önerilmemesini seçiyorum.

    • Bilgisayarım Almanya’da ama dili İngilizceye ayarlı. Buna rağmen YouTube bana makine çevirisi ses veriyor ya da Almanca videoları/reklamları İngilizceye tuhaf biçimde çeviriyor. Gerçekten çok garip ve yapay duruyor.

    • Sorun sadece başlıkların değil, ses parçalarının da çevrilmesi. Sık izlediğim bir YouTuber hayran yapımı ses parçalarını birçok dilde sunuyor ve ben her seferinde onu elle yeniden özgün dile döndürmek zorunda kalıyorum. Makine çevirisi yüzünden dil oyunları ve kültürel çağrışımlar kayboluyor. Bazen dil parçasını değiştirmek için videonun başına sarmak gerekiyor; tarayıcı eklentileriyle çakışmalar da cabası. Bu çevirilerin varsayılan olmaması, bunun yerine serbestçe açılıp kapatılabildiği bir arayüz olması iyi olurdu.

    • Artık Google, Kagi gibi yerlerde de Reddit arama sonuçları çevrilmiş halde çıkıyor. Aradığım cevabın kendi dilimde yazıldığını sanıyordum ama aslında İngilizceden makine çevirisiydi.

  • Her şeyden önce, hiçbir durumda otomatik çeviri varsayılan olmamalı. Gerçekten çevrilmiş dillerin listesi açıkça gösterilse yeter. Çeviri düğmesi zaten tarayıcıda var; isteyen kullanıcı kendisi uygular. İngilizce benim ne birinci ne de ikinci dilim ama rahatça okuyabiliyorum. Özgün İngilizceyi bulmak için otomatik çeviri yığınının içinde düğme aramak istemiyorum. Diğer yerel ayarlarda bu sorun daha nadir; özellikle İngilizcede daha sık oluyor. Makine çevirisi kullanılacaksa gerçekten bir kez denenip niyetle sonuç örtüşüyor mu diye doğrulanması gerektiğini düşünüyorum.

    • Reddit bana Fransızcaya otomatik çevrilmiş içerik gösteriyor ama Reddit’e özgü üslubu gerçek bir insanın çevirmesi bile neredeyse imkânsız. Hiç İngilizce bilmeseniz bile böyle otomatik çevirileri okumaya değmez. Özgün metni görme ya da dili değiştirme işlevini de cihaza ya da uygulamaya göre bulmak zor oluyor; bunun dışında Reddit sürekli uygulamayı yükletmeye çalışıyor.

    • Makine çevirisi son birkaç yılda o kadar gelişti ki bazen ana dil konuşurları bile bunun çeviri olduğunu fark etmiyor.

  • Beni en çok rahatsız eden Google. Kim olduğumu, seyahatte olup olmadığımı, tercih ettiğim dili (İngilizce) Google biliyor; buna rağmen bazı sayfalarda hâlâ bölgesel dili gösteriyor. Google beni izlemek için bu bilgileri kullandığına göre, kullanıcı deneyimini iyileştirmek için de daha fazla kullanmasını isterim.

    • Ben Katalanca kullanıcısıyım ama İspanyolca ne Google hesabımda ne sistem/tarayıcı dilimde hiç kayıtlı olmadı; yine de bana sürekli İspanyolca dayatılıyor. ABD’de yaşıyorum ama Katalanca ile ilgili aramalarda İspanyolca Vikipedi sonuçlarını öne çıkarıyor. Arama motorlarının bu davranışı hep kötüydü. Bu, benim çocuklarım gibi İspanyolca bilmeyenler ve İspanya dışındaki Katalanca bölgeleri için de sorun. Özellikle Google Gemini, Katalanca içeriği tehlikeli sayıp konuşmayı engelliyor. Google eskiden çeşitliliğe gerçekten duyarlıydı ama artık değil.

    • Son zamanlarda Google, harita yorumları gibi şeylerde yerel dili İngilizceye çevirmeden doğrudan gösteriyor. Sanırım bir yerde uzun süre kaldıysam o ülkenin dilini bildiğimi varsayıyor ama çoğu zaman tam da İngilizceye ihtiyaç duyuyorum. Arama sonuçlarında da aynı durum var. Yerel dili kullanmam sadece bölge hakkında bilgi edinmek istediğim anlamına geliyor ama Google bu kullanıcı davranışını doğru yansıtamıyor.

    • Bu tartışmayı bir Google geliştiricisiyle doğrudan yaptım. Ana sayfada kullanıcı bilgisini henüz kullanamadıkları için dil tercihini yansıtamadıklarını, bunun çift aşamalı bir render süreci yüzünden olduğunu söyledi ama Accept-Language başlığı ilk istekte zaten geliyor; bu yüzden bana mantıklı gelmiyor.

    • Google, Birleşik Krallık’ta yaşadığımı ve İngilizce kullandığımı biliyor. Ama İspanya’daki bir otel televizyonunda oturum açıp İngilizce YouTube videoları izlediğimde bana İspanyolca reklamlar gösteriyor. Anlamadığım bir dil olduğunu bildiği halde bunu sırf reklam verenler için yaptığı hissine kapılıyorum.

    • Yeni bir cihaz ya da tarayıcı kullandığımda Google ve hizmetleri İbraniceyle başlıyor. Sürekli İngilizceye çeviriyorum ama her seferinde tekrar yapmak gerekiyor; okuyabiliyor olsam da ortak dil olarak İngilizceyi tercih ediyorum.

  • Bütün tarayıcılar, kullanıcının tercih ettiği dilleri bildirmek için Accept-Language başlığını gönderebilir; ilgilenen kullanıcılar bunu kendileri de değiştirebilir. Ama Accept-Language her şeyi çözmez. Çünkü çok dilli kullanıcıların çoğunda mutlak bir sıralama değil, konuya göre değişen tercihler vardır. Örneğin Fransızcayı iyi biliyor olabilirsiniz ama İngilizce haberlerin Fransızca çevirisini istemeyebilirsiniz. Site yöneticileri zorla karmaşık özellikler geliştirmeye çalışmamalı; açık ve hızlı bir dil değiştirme arayüzü sunmaları yeterli. Vikipedi bunu iyi yapıyor.

    • Aslında Accept-Language gibi özelliklerden daha önemli olan şey, yarım yamalak otomatik çeviri değil, yüksek kaliteli çeviri sunmak. Arayüz ve sitenin kendi içeriği için resmî çeviri sürdürmek iyi olur; kullanıcı içeriği ise otomatik çeviri yerine mutlaka tarayıcı çeviri düğmesi gibi isteğe bağlı yöntemlerle sunulmalı. Öncelikli dil Accept-Language ile seçilip bunun yanında açık bir dil değiştirme seçeneği de sağlanmasını öneririm. Vikipedi’de her dil sürümü, içeriğin ayrı ayrı yeniden yazıldığı bağımsız bir site gibi çalışıyor.

    • Accept-Language, diller için ağırlık (q value) belirtmeye de izin verir. Web siteleri kullanıcının tarayıcı isteği dilini geçersiz kılabilmesine izin vermeli; tarayıcılar da site bazında “site varsayılanı”, “sistem dili”, “İngilizce iste” gibi seçenekler sunmalı. En ideal yöntem, web sitesinin desteklediği dil listesini manifest.json gibi bir yerde açıkça yayımlaması ve dil seçimini istemci tarafında ele alması olurdu.

    • Kullanıcıların fiilen en rahat ettikleri dili Accept-Language olarak ayarladıkları varsayımı zayıf. Çoğu site Accept-Language’ı düzgün desteklemediği için kullanıcıların bu ayarı yaparken büyük bir strateji güttüğünü sanmıyorum.

  • Bir devlet sitesinde çok dillilik ve erişilebilirlik için varsayılan dili Accept-Language ile seçen bir sistem uygulamıştım. Sonra PM bu kararı yok sayıp varsayılanı yalnızca EN (İngilizce) olarak sabitledi. Erişilebilirlik denetçisi Accept-Language kullanılması gerektiğini söylemişti; uygulanmış şeyi geri aldıklarını öğrenince sert tepki verdi. Sonuçta bu saçmalıklar sayesinde birkaç hafta daha sözleşmeli iş çıkmış oldu.

  • Ben de kendi dil şikâyetimi ekleyeyim. Apple TV’de yalnızca Japonca konuşan aile üyelerim var. Apple hesap ülkem Finlandiya. Ailemle birlikte The Martian izlemek istedim ama ses parçalarında yalnızca hesap ülkesinde desteklenen diller gösterildiği için Japonca dublajı seçemedim. Apple TV aboneliği aktifken hesap ülkesini değiştirmek de mümkün değil. Sonuçta ailece izleyemedik.

    • Muhtemelen bölgesel lisanslama sorunudur. İlgili dil dublajı Finlandiya’da kullanım için lisanslanmamış olabilir.

    • Netflix’te de benzer bir durum olmuştu. Finlandiya’da Kim's Convenience izleyebilmek için hesap dilini İngilizce yapmak gerekiyordu. İngilizce altyazı kullanmak isteseniz bile, Fince arayüzde o içeriğe erişmek mümkün değildi.

  • Accept-Language kullanarak kullanıcıya en yakın çeviriyi sunan bir sistemi bizzat geliştirmiştim. Örneğin Portekizce (Portekiz) yoksa otomatik olarak Brezilya Portekizcesi sunuluyordu. Teknik olarak iyi çalışıyordu ve uygulaması da keyifliydi ama pratikte kullanıcıların çoğu Accept-Language ne olursa olsun İngilizce istiyordu; dil değiştirme seçeneği de alt bilgide olduğu için yeterince görünür değildi. Bu yüzden artık dili doğrudan soruyoruz ve kullanıcı memnuniyeti ciddi biçimde arttı.

    • Doğrudan sormak derken, çerez kaydı yoksa siteye her girişte mutlaka dil seçimi açılır penceresi çıkıyor mu? Böyle pencereler tutarsız ve sinir bozucu; üzerinde bir X düğmesi olsa şükredilecek hale geliyor. 100 seferin 95’inde tıklayıp geldiğim dil zaten yeterli oluyor; gerekirse sadece sağ üstte ya da sayfa alt bilgisinde bir dil seçimi sunulsa bana yeter. Pop-up ya da modal olmasa daha iyi.

    • Accept-Language varsayılan başlangıç noktası olmalı ve buna ek olarak kullanıcıya seçim hakkı verilmeli. Dil değiştirme tasarımında simgelerin kaldırılmasına katılıyorum ama birden çok bölgeyi tek dil altında toplamak pek iyi değil.

    • Kullanıcıların çoğu işletim sisteminin varsayılan dilini olduğu gibi kullanıyor; nasıl değiştirileceğini bile bilmeden buna alışmış durumdalar.

  • Yurt dışında bu sorunlar gerçekten saçma ve hatta kendi ülkemde bile programlama dokümantasyonu gibi yerelleştirilmiş sürümlerde içerik farklı oluyor, çeviri kalitesi de düşük kalıyor. İdeal olarak özgün İngilizceyi görmek istiyorum. Son dönemde arama sonuçlarında da makine çevirisi içerikler giderek arttı. Reddit de yakın zamanda bunu uygulamaya koydu. Ben İngilizce olmayan bir arama terimini özellikle kullanıyorsam, o dile özgü bilgiyi aradığım içindir.

    • Reddit ekibi sanki yalnızca kendi ana dilini konuşan kullanıcıları varsayarak bu özelliği yapmış gibi görünüyor. Dünyadaki pek çok insan birden fazla dili anlayabiliyor; buna gerek yoktu.

    • MongoDB dokümantasyonunda da dil tabanlı otomatik geçiş yüzünden çok sinirlenmiştim. Arama sonuçlarında İngilizce görünüyor ama sayfayı açar açmaz JS onu Brezilya Portekizcesine çeviriyor. Sonra tam yüklenince tekrar İngilizceye dönüyor ama URL hâlâ /pt-br/ olarak kalıyor. Üstelik çeviri kalitesi de belirgin şekilde otomatik. Ben Portekiz Portekizcesi kullanıcısıyım; bu yüzden ince farklar daha da çok gözüme batıyor.