.NET'te Yerelleştirme İçin Etkili Stratejiler [kapalı]


121

Yakın gelecekte tüm içeriğin uluslararası olarak yerelleştirilmesini gerektirecek bir .NET MVC uygulaması için kullanıcı arayüzü geliştiriyorum. Genel olarak .NET ile çok tanıştım ancak hiçbir zaman uluslararası erişilebilirliğe odaklanmayı gerektiren bir projem olmadı.

Öngörülen başlangıçta İngilizce olarak yapılmaktadır. Gelecekte yerelleştirmeyi uygulamayı kolaylaştırmak için bu noktada ne gibi önlemler almalıyım?


2
Harika soru! Benzer bir durumla karşı karşıyayım ve bu konuda uzman olanları görmek isterim.

Kaynak yönetimi için herkes iyi standartlara sahip mi? Yerelleştirilmiş değer, yalnızca dizeleri değil görüntüleri de içerebilir.

1
Bu bir WPF / silverlight UI mı, yoksa Winforms mu? (Sınırlı) olan tecrübeme göre, yerelleştirme için WinForms deneyimi WPF / Silverlight'tan daha basittir.
Pete Stensønes

1
: Bunun yerine kaynak dosyaları, veritabanındaki yerelleştirilmiş dizeleri biriktirmeleri, bir bu tartışma en bakmak isteyebilirsiniz stackoverflow.com/questions/2458615/...

1
@Pete, @smartcaveman ".NET MVC uygulaması için kullanıcı arayüzü geliştiriyor" dedi, yani ...
BrunoSalvino

Yanıtlar:


74

ASP.Net MVC uygulamasını geliştiriyorsunuz, değil mi? Diğer cevaplar masaüstü uygulamalarına özgü gibi görünmektedir. Yaygın şeyler yakalamama izin verin:

Yerel ayar tespiti

Uygulamanızın kullanıcının yerel ayarlarını doğru algılaması oldukça önemlidir. Masaüstü uygulamasında, CultureInfo.CurrentCulture tercih edilen biçimlendirme yerel ayarını (sayıları, tarihleri, para birimlerini vb. Biçimlendirmek için kullanılması gereken) vb.), CultureInfo.CurrentUICulture tercih edilen Kullanıcı Arayüzü yerel ayarını (yerelleştirilmiş mesajları görüntülemek için kullanılması gereken) tutar. . Web uygulamaları için, bazı süslü yerel ayar algılama iş akışını uygulamak istemediğiniz sürece (yani istek üzerine değişen dili desteklemek istemediğiniz sürece), her iki kültürü de otomatik (yerel olarak AcceptLanguage başlığından yerel olarak algılamak için) ayarlamanız gerekir.

Dizeleri dışa aktar

Tüm dizeler kaynaklardan gelmelidir, bu Resx dosyalarıdır. Winforms App formunda Localizable özelliğini true olarak ayarlayarak kolayca erişilebilir. Ayrıca, modelinizden gelen dizeleri manuel olarak (ne yazık ki) dışlamanız gerekir. Aynı zamanda nispeten basittir. Asp.Net'te her şeyi manuel olarak dışlamanız gerekir ...

düzenleri

Dize genişlemesine kesinlikle izin vermeniz gerekir. Winforms dünyasında, tablonun daha uzun metne uyum sağlamak için otomatik olarak ayarlanmasını sağlamak için kullanılması gereken TableLayoutPanel ile erişilebilir. Web dünyasında biraz şanssızsın. CSS Yerelleştirme Mekanizması uygulamanız gerekebilir - CSS tanımlarını değiştirmenin (geçersiz kılmanın) bir yolu. Bu, Yerelleştirme halkının talep üzerine stil sorunlarını değiştirmesine olanak sağlar. Oluşturulan sayfadaki her HTML öğesinin benzersiz bir kimliği olduğundan emin olun - tam olarak hedeflemesini sağlar.

Kültüre özgü konular

Batı kültürüne özgü olabilecek grafik, renk ve sesleri kullanmaktan kaçının. Gerçekten ihtiyacınız varsa, lütfen Yerelleştirme araçlarını belirtin. Yöne duyarlı grafiklerden kaçının (bu, Arapça veya İbranice söyleyerek yerelleştirmeye çalıştığınızda bu bir sorun olacaktır). Ayrıca, tüm dünyanın aynı sayıları kullandığını varsaymayın (yani Arapça için doğru değil).

ToString () ve Parse ()

Desteklenmiyorsa, ToString () işlevini çağırırken her zaman CultureInfo ilettiğinizden emin olun . Bu şekilde niyetlerini yorumluyorsun. Örneğin: eğer bir sayıyı dahili olarak kullanıyorsanız ve bir nedenden dolayı onu dize kullanımına dönüştürmeniz gerekir:

int i = 42;
var s = i.ToString(CultureInfo.InvariantCulture);

Kullanıcının kullanımına gösterilecek numaralar için:

var s = i.ToString(CultureInfo.CurrentCulture); // formatting culture used

Aynısı, Parse (), TryParse () ve hatta ParseExact () için de geçerlidir - bazı kötü hatalar, CultureInfo'nun doğru kullanımı olmadan ortaya çıkabilir. Bunun nedeni, Microsoft’taki bazı zayıf ruhların, iyi niyetlerle dolu olmalarının, CultureInfo.CurrentCulture’ı varsayılan olarak kabul etmenin iyi bir fikir olduğuna karar vermesidir (eğer bir şeyi geçemezseniz kullanılır) - sonuçta biri ToString ( ) Kullanıcıya göstermek istiyor, değil mi? Her zaman durum böyle değildir - örneğin uygulama sürüm numaranızı veritabanında depolamayı deneyin ve ardından Version sınıfının örneğine dönüştürün. İyi şanslar.

Tarihler ve zaman dilimleri

DateTime öğesini her zaman UTC’de sakladığınızdan ve başlattığınızdan emin olun (DateTime.Now yerine DateTime.UtcNow kullanın). Görüntülendikten sonra yerel formatta yerel saate dönüştürün:

DateTime now = DateTime.UtcNow;
var s = now.ToLocalTime().ToString(CultureInfo.CurrentCulture);

Vücutta zaman referansı olan e-postalar göndermeniz gerekiyorsa, zaman dilimi bilgilerini eklediğinizden emin olun - UTC ofsetini ve şehirlerin listesini ekleyin:

DateTime someDate; // i.e. from database
var formattedDate = String.Format("{0} {1}", 
             someDate.ToLocaleTime().ToString(CultureInfo.CurrentCulture),
             TimeZoneInfo.Local.DisplayName);

Bileşik mesajlar

Dizeleri birleştirmek için uyarıldınız. Bunun yerine muhtemelen yukarıda gösterildiği gibi String.Format () yöntemini kullanırsınız. Ancak, bileşik iletilerin kullanımını en aza indirmeniz gerektiğini belirtmeliyim. Bunun nedeni, hedef dilbilgisi kurallarının oldukça farklı olması nedeniyle çevirmenlerin sadece cümleyi yeniden sıralamaya ihtiyaçları olmayabilir (bu, yer tutucuları ve String.Format () kullanarak çözülebilir), ancak tüm cümleyi farklı şekilde çevirmek zorunda kalabilir. Neyin yerini alacağı. Sana bazı örnekler vereyim:

// Multiple plural forms
English: 4 viruses found.
Polish: Znaleziono 4 wirusy. **OR** Znaleziono 5 wirusów.

// Conjugation
English: Program encountered incorrect character | Application encountered incorrect character.
Polish: Program napotkał nieznaną literę | Aplikacja napotkała nieznaną literę.

Diğer birleştirme sorunları

Birleştirme, dizelerle sınırlı değildir. Kontrolleri bir arada bırakmaktan kaçının;

[Sayı ile metin kutusu] günlerinde tekrar hatırlat.

Bu, şu şekilde yeniden tasarlanmalıdır: Bu günlerde tekrar hatırlat: [text box].

Karakter kodlaması ve yazı tipleri

Unicode'da ne olursa olsun her zaman metni kaydedin, aktarın (örn. UTF-8). Yazı tiplerini zorlamayın - Yerelleştirmenin bunları değiştirmeniz gerekebilir ve varsayılan yazı tipi geri dönüş mekanizmasını kapatır (Winform'larda). Çoğu alanda "garip" karakterlere izin vermeyi unutmayın (ör. Kullanıcı adı).

Ölçek

Büyük olasılıkla sözde çeviri uygulamanız gerekecek, yani Alman kültürü için kaynaklar yaratmanız ve İngilizce dizelerinizi önek ve sonek ekleyerek kopyalamanız gerekecek. Ayrıca, bileşik dizeleri kolayca tespit etmek için yer tutucuları da sarabilirsiniz. Sözde çevirinin amacı, kodlanmış dizeler, yerleşim sorunları ve bileşik mesajların aşırı kullanımı gibi Yerelleştirilebilirlik sorunlarını tespit etmektir.


5
Birleşik Mesajlara İlişkin - Bir defadan çok çoğul formlar yapmak zorunda kaldım. String.FormatBu harika sözdizimini destekleyebilmesi için genişlettim : "There {0:was|were} {0} {0:virus|viruses} found."Her dil kendi kurallarını yükleyebilir, böylece yapabildin "Znaleziono {0} {0:wirusy|wirusów}." Kaynak GitHub'da: github.com/scottrippey/SmartFormat/wiki
Scott Rippey

2
@Scott Rippey Polonya örneğinin "Znaleziono 4 wirusy. OR Znaleziono 5 wirusów " yazdığını fark ettiniz mi? <- Lehçe, diğer birçok dilde olduğu gibi, ikiden fazla çoğulca formdadır ve aralarında ayrım yapma kuralları da karmaşık olabilir. Burada konuşmadığım için Lehçe'yi terk etmeliyim, fakat benim dilimizde 101 şeyin çoğul hali, 1 şeyin aynısı. GNU gettext'in
gregopet

2
@gregopet Lehçe örneğim kabul edildi, çünkü konuşmuyorum, fakat SmartFormat projesinin yaptığı tam da bu. İşte daha iyi bir örnek: "{0} {0:plik|pliki|plików}". Formatlayıcı, hangisinin kullanılacağını belirleyen ve özel durumları doğru şekilde belirleyen bir Polonya kuralına sahiptir. Şu anda daha fazla kural eklemeye çalışıyorum, bu yüzden gettextmakale çok faydalı olacak, teşekkür ederim.
Scott Rippey,

Pseudolocalization için, ben bir ücretsiz online pseudolocalization aracı inşa pseudolocalize.com
JerSchneid

74

Dikkate almanız gereken bazı temel şeyler:

Tüm dize kaynaklarını dışa aktar

Tüm kaynaklarınız yerelleştirme için dağıtılabilecek harici dosyalarda bulunmalıdır. Bunların yerelleştirilmesini istiyorsanız, hata mesajlarını unutmayın.

Dize genişletmesi için yeterli alana izin verin

Bazı dillerdeki dizgiler, örneğin% 30'a kadar daha uzun (örneğin Yunanca) olma eğilimindedir, bu nedenle, kullanıcı arabiriminizi gerekirse dizgelerin genişletilebileceği şekilde tasarladığınızdan emin olun. İşte Fransızca için oldukça aşırı bir örnek:

Tamam -> Kabul (Fransızca -% 400 genişleme)

Bir tür sahte çeviri yapmayı başlangıç ​​noktası olarak öneririm ( http://en.wikipedia.org/wiki/Pseudolocalization ). Veya kaynaklarınızı Google Translate veya Bing ile çevirebilirsiniz. Bu size gerçek çevirilerin nasıl görüneceğine dair iyi bir gösterge verecektir.

Resimlerdeki metinlere dikkat edin

Uygulamanızda herhangi bir resim kullanıyorsanız - metin içermediklerinden emin olun - bu açıkça çevrilemez.

Asla Windows klasörlerine hiçbir yolu kodlama

Açıkçası, ama geçmişte gördüm. Örneğin, C:\Program Filesbazı uluslararası Windows sürümlerinde çevrilir, örneğin C:\Programmebir Alman işletim sisteminde.

Yerele özgü terimler kullanmaktan kaçının

Örneğin, bir kişiden bir formda 'Lise'yi istemeniz durumunda, bunun Batı Avrupa'da çok az bir anlamı var.

Dize bitiştirme yoluyla dizeleri oluşturmaktan kaçının

Örneğin, bu zararsız görünüyor:

strWelcome = ReadExternalString("Welcome"); 
strMessage = strWelcome + ", " + UserName;

Ancak, örneğin Japonca kelimesi sıralaması farklı olacaktır, bu yüzden bu bir anlam ifade etmeyebilir.

Saat / Tarih Ayarları

İşletim sisteminden saat / tarih biçiminin alındığından daima emin olun.


@ Jimmy C, dilden bağımsız mantıksal tutarlılık için karakter dizileri oluşturmaya nasıl gidiyorsunuz?
smartcaveman 10:11

14
@Smart kaynağınızda "{0}, {1}" gibi bir şey yapın, sonra yerelleştirdiğinizde string.format kullanın ve karşılama ve kullanıcı adını iletin. Ayrıca bu, "Geçerli {0} hızın {1} {2}" olması ve "Motor", "50" ve "MPH" değerlerine sahip olmanın avantajını sağlar ve cümlenizi çevirirken, { 0} etc bu dilde anlamlı oldukları yerlere
taylonr

4
İyi liste JimmyC. "Asla Windows klasörlerine hiçbir şekilde kod yazma", Windows yolları için dize birleştirme yerine "Her zaman Path.Combine kullan" ı hatırlattı.

@ Jimmy-C Harika cevap!

1
Environment.GetFolderPath, Belgelerim gibi genel yollara, bu klasörlerin İngilizce adına bağlı olmadan geçerli yollar almak için kullanılabilir.
Crippledsmurf

24

Asya Dilleri İçin Özel Hususlar

Buradaki tüm harika cevaplara ek olarak, bazı Asya dilleri için dikkat edilmesi gerekenler:

Farklı metnin uzunluklarından sakının

Çince ve Korece metin, aynı İngilizce metinden çok daha kısa olma eğilimindedir (genellikle aynı şeyi yazmak için genellikle daha az bloklu karaktere ihtiyaç duyarsınız), bu nedenle bir sayfa aslında Çince olarak boş görünebilir , ancak Almanca olarak tam olarak sıkışmış olabilir ... Yapmanız gerekenler Bazı dinamik boyutlandırma burada iyi görünmek için.

Ancak, Japonca metin genellikle karakter sayısı bakımından eşdeğer İngilizce metinden daha uzun, daha uzun olma eğilimindedir.

Taban çizgisi düzenine ve "kaydırılmış" görünüme dikkat edin

Asya karakterleri genellikle alt çizgi üzerinde yazılmıştır , bunlar altlıkları içermez (ör. Y, g, q, j vb. Alt kısımları). Bir ekran öğesini biçimlendirdiğinizde - genellikle düğmeleri - içinde metin olan ve bu metin yalnızca Asya dilleridir (yani Batı alfabesi yoktur), metin yukarı kaydırılmış gibi görünür.

Sayıların ve yerel sayısal birimlerin biçimlendirilmesi

Sayı biçimlendirmesini farklı şekilde işleyin. Farklı Asya ülkelerinin sayıları biçimlendirme yöntemleri farklıdır. Para birimleri ile aynı. Örneğin, Doğu Asya'da, 10.000 (wan) ortak bir birimdir. Hindistan'da, 100.000 (lakh) yaygındır.

Yerel para birimleri

Bazı ülkelerin para birimleri çok sayıda sıfır içerir ve ondalık basamağı yoktur (örn. Japonya, Endonezya, İtalya), bazıları ise basamağın ardından iki basamağa kadardır.

Farklı kelime sıralarına dikkat edin

Kelime sırası her zaman aynı olmayabilir. Dizeniz farklı veri parçalarının birleşiminden geliyorsa, kodlama sözcüğü sırası yerine dize biçimlendirmesinde {0}, {1} vb. Kullanın.

Yerel ayarlara özgü sıralama kullan

Sıralama, dil ve yerel ayarlara göre farklılık gösterir - her zaman O / S'nin yerel ayar türüne bağlı olmalısınız.

Tam genişlik / yarım genişlik karakterlerle çok dikkatli olun

"Tam genişlik" ve "Yarım genişlik" karakterleri arasındaki farklara dikkat edin. Parantezler, noktalama işaretleri vb., Standart ASCII'den farklı "tam genişlikte" versiyonlara sahip olabilir. Bu harflere göre arama veya dize bölme yaparsanız, önce tüm tam genişlik sembollerini yarı genişlik eşdeğerlerine dönüştürmeniz gerekir.

Bir nokta nokta değildir ... virgül virgül değildir ...

Veri girişine dikkat edin gotcha'lar - örneğin, Çince'de bir nokta nokta değildir . Virgül, "," değil, tam genişliktedir. Veri girişini yapan kullanıcı yanlışlıkla Asya dili IME'sini açabilirse batı noktalama işaretlerini aramaya çalışmayın.

Telefon numaraları

Telefon numarası biçiminde hiçbir şey varsaymayın . Her zaman bir alan kodu vb. Yoktur ve farklı biçimde biçimlendirilebilir. Genellikle, ülke başına bir format dizesi vardır.

İnsanların yalnızca bir cep telefonu numarasına veya bir faks numarasına vb. Sahip olduğunu varsaymayın . Asya'da bu böyle değildir.

Adresler - düşündüğünüzden daha yoğun

Adresler için hiçbir şey varsaymayın . Her zaman bir posta kodu olmayabilir. Posta kodları her zaman sayı olmayabilir. Bir ülkenin illeri / eyaletleri olmayabilir. Bir ülke sadece büyük bir şehir olabilir (örneğin Singapur). Bazı Asya ülkeleri için, bir evin en küçük birimi "Oda X, Ünite Y, Bölüm Z, Kat A, Blok B, Grup C, Emlak D" olabilir. Genel olarak, adreslerde izin verilen alan sayısı ve karakter sayısı konusunda çok liberal olun .

Selamlar

Seks için "M" ve "F" kullanarak muhtemelen güvenli olmamıza rağmen Selamlar sadece vs. Bay, doyacaksınız sınırlı değildir - biz değiliz o henüz garip ...


1
Son paragraf beni güldürdü.
BoltClock

Oh, biz (i18n çocuklar) henüz başlamadık bile ... Sadece yüzeyi çizebildik :) GB18030 desteği gibi belirli konular hakkında konuşacak olsaydık, yazımız SO'nun ele alması için çok uzun olurdu :) Teşekkürler Yine de notunuz için epeyce eşya kaçırdım.
Paweł Dyda

Son olarak, İngiltere’nin resmi olarak “Diğer” i cinsiyet olarak kabul ettiğini düşünüyorum. Transseksüelleri düşünün.
Bart Friederichs

11

Bazı temel adımlar, ekranda görüntülenen herhangi bir dizginin kodunuzda değişmez olduğundan emin olmak içindir. Winforms yapıyorsanız, her form bir UI kaynağına sahip olacaktır. Diyaloglar, raporlar vb. İçin proje kaynak dosyalarını kullandığınızdan emin olun.

Bu yüzden kodunuzda "Yükleme başarısız" yerine, Resources.UploadFailed gibi bir şeye sahip olabilirsiniz

Bu şekilde, kullandığınız her dil için yeni bir kaynak dosyası oluşturabilirsiniz (ve. Net bu konuda yardımcı olacaktır.) Ve her dosyada yerelleştirilmiş dizeye sahip olun.

EDIT Kullanıcı arayüzünüzü yaparken bahsetmeyi unuttum, sadece oradaki işleri sıkıştırmamaya dikkat edin. Yerelleştirdiğiniz dillere bağlı olarak emlak bir sorun olabilir. İp büyümesi için en büyük 2 suçlu olarak Almanca ve Portekizce olan bir proje üzerinde çalıştım. Dikkatli olmasaydık, İngilizce'de iyi olan ipler, Fransızca ve İtalyanca, Almanca'da patlardı.


1
L10n deneyimlerime göre, Rus en kötü senaryodur. WinLop'taki Howeverm, uygun TableLayoutPanels kullanıcısı ile yapıldığında dize büyümesini dikkatlice halledebilirsiniz.
Paweł Dyda

Evet, deneyimim 7 dille sınırlıydı: İngilizce, Almanca, Portekizce, İtalyanca, Fransızca, İspanyolca ve Japonca. Ancak Rusların kötü olduklarını ve birçok
eke

9

Derlemelerinizde FXCop veya Visual Studio Kod Analizi (aynıdır) çalıştırmanızı öneririm .

Kültüre yönelik uygun aşırı yüklemeleri kullanmayan .NET kodunu tespit etmede iyidirler , bunun gibi: CA1305: IFormatProvider'ı belirtin .

Bu araçların ayrıca sinir bozucu olduklarını da eklemeliyim, çünkü kodunuzda genellikle zilyonlarca sorun tespit ediyorlar, ancak yine de, her kurala uymasanız bile, çok şey öğrenmelisiniz.


Bu varsayılan mıdır, yoksa küreselleşmeye özgü kuralları aramak için bir ayar belirtmem gerekir mi?
smartcaveman

@smartcaveman - bu varsayılan (hmm .. aslında, bazı insanlar bu araçlarda çok daha fazla kural olduğunu düşünüyorlar :-)
Simon Mourier

7

Kaynakları nasıl yükleyeceğinize ek olarak, başlamak için sözde yerelleştirilmiş bir sürümle test ettiğinizden emin olun. Aksi takdirde, uluslararasılaşma ile ilgili kaygıların sona erdiği yerlerin farkına varamazsınız.


Hızlı ve kolay bir yoludur pseudolocalize için, ben bir ücretsiz online aracı inşa pseudolocalize.com
JerSchneid

6

Diğer tüm faydalı ipuçlarına ek olarak, işte eksik olanlardan bazıları:

Bazı ülkelerin birden fazla dil kullandığını dikkate alın. Örneğin, Kanada'da, bir kullanıcı İngilizce ve Fransızca arasında kolayca geçiş yapmayı beklerdi.

Kullanıcıya tek harfli bir cevap bekleyen bir soru sorarsanız, kullanıcının Evet demek için 'Y' tuşuna basmasını beklemeyin.

SQL DB’de tarihlenen ABD’nin kayıtlı olduğu işlemlerden çok haberdar olun

Metin dizelerini DB'ye yerleştirmek, daha sonra yeniden konuşlandırma yapmadan başka diller eklemenizi sağlar.

Yazılı metin dosyalarını çeviri için gönderirken, çevirmenin doğru sözcüğü seçmesini sağlamak için her zaman bir bağlam açıklaması ekleyin. Örneğin, bağlamsız, "pitch:" ı sesle ya da futbol oynadığınız bir yere çevirmek için çevirebilirsiniz.

Adres etiketleri her zaman dönüştürmeye ihtiyaç duyar. Kanada’daki Eyalet, Amerika’daki Eyalet, İngiltere’deki


5

Dikkate almak gerekir:

  1. Çoklu dil için yönlendirme

  2. Tüm sabit kod dizesini kaynak dosyasına taşı

Bir özellik için bir örnek:

Model:

[Display(Name = <Resource for display name>.<field for this property>)]
[Required(ErrorMessage = <Resource for error message>.<field for this validate message>)]
public string TestProperty { get; set; }

Görünüm:

@Html.LabelFor(m=>m.TestProperty)
@Html.EditorFor(m => m.TestProperty)
@Html.ValidationMessageFor(m => m.TestProperty)

5

İşte cevapların geri kalanında bahsedilmeyen bir şey.

Uygulamanızın karmaşıklığına ve yerelleştirilmesine bağlı olarak, alternatif bir kaynak sağlayıcı uygulamanızı ve yerel kaynakları bir veritabanında tutmanızı tavsiye ederim. Varsayılan ASP.NET yerelleştirme programında tüm kaynaklar RESX dosyalarında tutulur, bunlar:

  1. Popodaki bir ağrı Visual Studio'da düzenlenmeli
  2. Uygulama derlendikten / sevk edildikten / çalıştırıldıktan sonra yerel kaynakların dağıtımını ve yönetimini sınırlandırın.

Muhtemel bir kullanım durumu olarak, uygulamanız için dil paketleri sağlayın ve UI üzerinden dilleri içe ve dışa aktarabilirsiniz. RESX dosyaları burada yardımcı olmaz.

Bunun gibi senaryolarda alternatif bir kaynak sağlayıcı çok faydalıdır. Birinin nasıl uygulanacağı hakkında daha fazla bilgiyi burada bulabilirsiniz . Elbette bu, kurumsal uygulamalarda daha sık görülen, ancak yine de geçerli olan nadir bir durumdur.


1
Bu harika cevapların cevaplarına bakmak için zaman ayırdığınız ve yine de yeni ve yararlı bir şey için katkıda bulunduğunuz için teşekkür ederiz.
smartcaveman

+ 1; Asp.NET'te kapsamlı bir web uygulaması kurdum ve veritabanından çeviriler yaptık. Yeni özellikler sık ​​sık eklendi ancak tercümanlarımız kullanılan terminolojide uzman olmadıklarından, "Neden açıkça yanlış olan Y kelimesini kullanıyorsunuz?"
Gregopet

3

En önemli şey, içeriği çeşitli dillerde yönetmektir. Birkaç web sitesi geliştirdim ve içeriği çeşitli dillerde yönetmek en büyük zorluk.

Kaynakları / içeriği depolamak için Veritabanı kullanıyorum. Bana istediğim dil desteğini ekleme esnekliği veriyor. Belirli bir dilde bir kaynak bulunmazsa ingilizceye geri dönme mantığını uyguladım.

Daha sonra ingilizce değerini herhangi bir dile çevirmek için bir tercüman kullanabilirsiniz.


2

Uluslararasılaştırmada dikkat edilmesi gerekenlerin özeti:

  • Tüm bilgiler uluslararasılaştırılmalıdır. Grafiklerin uluslararasılaştırmak istediğimiz bilgilere sahip olabileceğini dikkate alın.

  • Dile bağlı olarak alanların veya dizgilerin boyutu, bize bir soruna neden olabilir.

  • Kelimelerin sırası bizim olduğumuz dile göre değişir, bu yüzden bir dilden bir sıra diğerinde aynı olacaktır.

  • Tarih biçiminin bir dilden diğerine değişeceğini göz önünde bulundurmalıyız.


1

Do Türkiye testini :

Yazılımın uluslararasılaştırılması en iyi şartlar altında zordur , ancak belirli bir ülkenin uluslararasılaştırma sorunlarının tartışılmasında ne kadar sıklıkla gündeme geldiği beni şaşırttı: Türkiye ...

Yerelleştirme veya uluslararasılaşma konusunda bir katiyeye önem veriyorsanız , kodunuzu mümkün olan en kısa sürede Türkiye yerelinde çalışacak şekilde zorlayın . Kodunuz için en çok kullanılan güçlü bir bellwether - ama hiçbir şekilde - tüm kültür ve yerellerde ...

Siteniz / programınız bir Türk müşterisiyle iyi çalışıyorsa, diğer platformlarda da çalışacağından emin olabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.