Soru En-US ve en_US için yerel oluşturmanın arasındaki fark nedir?


Tüm resourcebundle değerlerini tabloya alıyorum ve gereksinim doğrultusunda biçimlendiriyorum. Sayfanın üst kısmındaki açılır menü seçeneğindeki Kullanıcı seçimine bağlı olarak web sitesindeki dilleri değiştirmek zorundayım. Dil kodunu en_US olarak kullanırsam, o zaman iyi çalışır. En-Us'u Dil Kodu olarak kullanırsam o zaman çalışmıyor. Sorun ne olabilir? Hangisi doğrudur?


25
2018-01-08 07:22


Menşei




Cevaplar:


"en", ISO 639 tarafından belirtilen dil kodudur. ABD ise 3166 tarafından belirlenen ülke kodudur.
Java'da, Locale nesnesi, dili languageCode_countryCode (ör. en_US) ve değil languageCode-countryCode.


21
2018-01-08 07:38





"en-US" bir IETF dil etiketi. Java'a yerel sınıf açıkça IETF dil etiketlerine dayanıyordu, dil kodlarını ülke kodlarından (ve ayrıca türevlerden) ayırırken tire yerine alt çizgi kullanır, böylece toString() eşdeğer Locale sana vereceğim en_US.

Java 7'den itibaren kullanabilirsiniz Locale.forLanguageTag(String) ve toLanguageTag() dil etiketleri arasında geçiş yapmak Locale nesneler.

Dizeleri dönüştürürken Locale nesneler, tire ve altçizgi parçalarını bölerek, birinci bileşeni (dil kodu) ve ikinci bileşeni (ülke kodu) üst-kaplamayı indirerek normalleştirmek iyi bir fikirdir.


24
2018-01-08 07:53



Bu cevap, java kodunda ne yapılacağının en iyi cevabıdır. Diğer diller / çerçeveler için değil, çok fazla. Farklı sözleşmeler içeren çerçeveler arasında arama yaparken, kodlayıcının bir dönüşüm gerektiğini bilmesi gereken bir "pratfall" var. Aradığınız çerçevenin sözleşmesini kullanmanızı öneririz. Başka bir çerçeveye çağrı yaparken, dönüşümü "proxy" sağlayın. Niye ya? çağrılan çerçevenin farklı bir kuralı kullandığını bilme ihtiyacını ortadan kaldırır. Katkıda bulunanlar, SADECE bir anlaşmayı, bunun çökmekten kaçınacağını "görür". - DaBlick


Ya da kullanabilirsiniz Locale us = Locale.forLanguageTag("en-US") ve us.toLanguageTag()ve bu sizin kendi hataya açık uygulamanızı oluşturmak zorunda kalmadan sizin için dönüşümü gerçekleştirecektir.


6
2017-07-31 19:40





Java8'den itibaren Yerel ayarın başlatılması, "en-US" dil etiketi kullanılarak yapılmalıdır. Locale.forLanguageTag ( "en-us") toString ().; çıktıyı döndürür: en_US

Locale.forLanguageTag ("en_US") gerekli yerel ayarı oluşturmaz. Sistem yerel ayarlarına göre varsayılan olacaktır.  Locale.forLanguageTag ("en_US"). ToString () null değerini döndürür


2
2018-06-16 10:10