Tôi tin rằng bạn cần viết mã số đọc văn hóa của người dùng từ yêu cầu trình duyệt đến và đặt CultureInfo của bạn từ đó.
This fellow describes how they do it: Đặt văn bản hiển thị cho chuỗi hiện tại thành văn bản thích hợp nhất từ đối tượng "yêu cầu" đến của người dùng.
Ông có một cuộc thảo luận tuyệt vời ở đó, nhưng điều này về cơ bản là như thế nào thì nó làm:
Trong Page_Load
, họ thực hiện cuộc gọi này: UIUtilities.setCulture(Request);
đâu đây là những gì được gọi là:
/// Set the display culture for the current thread to the most
/// appropriate culture from the user's incoming Http "request" object.
internal static void setCulture(HttpRequest request)
{
if (request != null)
{
if (request.UserLanguages != null)
{
if (request.UserLanguages.Length > -1)
{
string cultureName = request.UserLanguages[0];
UIUtilities.setCulture(cultureName);
}
}
// TODO: Set to a (system-wide, or possibly user-specified) default
// culture if the browser didn't give us any clues.
}
}
/// Set the display culture for the current thread to a particular named culture.
/// <param name="cultureName">The name of the culture to be set
/// for the thread</param>
private static void setCulture(string cultureName)
{
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(cultureName);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(cultureName);
}
Trên dòng bên phải, nhưng lưu ý rằng tiêu đề Chấp nhận ngôn ngữ được gửi bởi trình duyệt không nhất thiết phải là ngôn ngữ ưa thích của người dùng. Tôi đang ở châu Âu và xảy ra để có một phiên bản Windows của Mỹ, vì vậy IE8 của tôi gửi en-US. Cũng lưu ý rằng tên trong tiêu đề chấp nhận ngôn ngữ có thể không phải là tên văn hóa .NET hợp lệ, do đó, lệnh gọi đến CreateSpecificCulture phải được đính kèm trong thử/nắm bắt. – Joe
không may mắn. Tôi vẫn nhận được en-us khi thử nghiệm – thchaver
Bạn nhận được gì từ Request.UserLanguages? Tức là, bạn có chắc chắn ngôn ngữ mà trình duyệt của bạn đang yêu cầu không? – DOK