2009-10-01 24 views
15

Có ai biết trong ASP.Net cách nhận ngôn ngữ của dòng văn hóa hiện tại mà không có tên quốc gia của nó không? Tôi biết văn hóa bất biến này không có vấn đề này, nhưng tôi không biết cách tạo chúng mà không chỉ định một ngôn ngữ rõ ràng. Tôi muốn hiển thị ngôn ngữ đang hoạt động và trong nl-nl, đây là tiếng Hà Lan (Hà Lan).Cách nhận ngôn ngữ mà không có quốc gia từ CultureInfo

Đây là cách tôi đặt CurrentCulture:

private void Application_BeginRequest(Object source, EventArgs e) 
{ 
    string[] languages = HttpContext.Current.Request.UserLanguages; 
    string language = languages[0].ToLowerInvariant().Trim(); 
    if (!string.IsNullOrEmpty(language)) 
    { 
     System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language); 
     System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(language); 
    } 
} 

Trong trường hợp của tôi, văn hóa là "nl-nl". Vấn đề là những gì được hiển thị trên trang web khi sử dụng CurrentCulture.EnglishName là "Dutch (Hà Lan)". Tôi chỉ muốn xem tiếng Hà Lan!

Cảm ơn!

Trả lời

36

đơn giản:

CultureInfo ci = CultureInfo.GetCultureInfo ("nl-nl"); 

if(ci.IsNeutralCulture) 
{ 
    Console.WriteLine (ci.EnglishName); 
    Console.WriteLine (ci.NativeName); 
} 
else 
{ 
    Console.WriteLine (ci.Parent.EnglishName); 
    Console.WriteLine (ci.Parent.NativeName); 
} 
+0

Cảm ơn! không biết điều này là hiển nhiên! MSDN đã không cho tôi biết bất cứ điều gì ... – Peter

+0

Awesome ..... :) –

+0

Thật không may, đối với Vương quốc Anh (gb), kết quả là 'Ngôn ngữ không xác định (gb) ':( –

6

CultureInfo đối tượng chứa thuộc tính gọi là mẹ - nếu nó được đặt sau đó thì có CultureInfo với mong muốn EnglishName = Dutch

0

Bạn có thể sử dụng đối tượng HTTP_ACCEPT_LANGUAGE.

Các vấn đề liên quan