2012-03-14 28 views
5

Tôi muốn biết cài đặt hoặc vị trí từ nơi System.Globalization.CultureInfo.CurrentCulture đọc giá trị của nó.Từ nơi CultureInfo.CurrentCulture đọc văn bản

Tôi đang sử dụng máy tính xách tay windows 7 và đã thay đổi cài đặt theo vùng và ngày giờ của hệ thống của tôi sang Hoa Kỳ.

tôi đã mã của tôi làm việc sử dụng dưới đây thiết lập trong web.config dưới

<globalization culture="en-US" /> 

Cảm ơn

Trả lời

6

các MSDN nói

Văn hóa là một tài sản của các chủ đề thực hiện. Thuộc tính chỉ đọc này tương đương với việc lấy đối tượng CultureInfo được trả về bởi thuộc tính Thread.CurrentCulture. Khi một chủ đề được bắt đầu, văn hóa của nó ban đầu được xác định bằng cách gọi hàm Windows GetUserDefaultLocaleName.

Nói cách khác, nó dựa trên các chủ đề, phù thủy có một bối cảnh ... trong bối cảnh ASP.NET, mà xuất phát từ Locale sử dụng trong trình duyệt khách hàng đầu tiên nếu sử dụng Server Variables hoặc Cài đặt hệ thống trên mọi thứ khác.

Dưới bối cảnh Web này, bạn có thể lấy nó bằng cách sử dụng phương pháp Server.Variables trên HTTP_ACCEPT_LANGUAGE và bạn sẽ nhận được một cái gì đó như:

en-US,en;q=0.8,pt-PT;q=0.6,pt;q=0.4 

Witch khẳng định rằng trình duyệt khách hàng có 3 ngôn ngữ thiết lập, nơi đầu tiên là en-US.

Tất cả mọi thứ từ System.Globalization xuất phát từ Hệ thống các định nghĩa giống như hình ảnh dưới đây cho thấy:

enter image description here

mã trên là:

<p> 
    <pre>System.Globalization.CultureInfo.CurrentCulture</pre> 
    is @System.Globalization.CultureInfo.CurrentCulture.EnglishName 
</p> 

Không có vấn đề gì trình duyệt đang sử dụng, các định nghĩa cho System.Globalization sẽ luôn xuất phát từ định nghĩa của hệ điều hành

enter image description here

+0

Cảm ơn Balexandre, đây có vẻ là thông tin tốt. Nhưng tôi chỉ kiểm tra thiết lập miền địa phương của trình duyệt của tôi và en-US của nó (tôi đang sử dụng firefox và tôi đã kiểm tra thiết lập general.useragent.locale trong about: config) cũng như các thiết lập datetime và các thiết lập vùng của tôi được đặt thành en-US. Nhưng tôi vẫn nhận được en-IN khi kiểm tra System.Globalization.CultureInfo.CurrentCulture. Bạn có bất kỳ ý tưởng mà tôi sai? – TechnicalSmile

+0

đã thêm hình ảnh để hiểu rõ hơn ... – balexandre

2

Sau khi trải qua 8 giờ - Tìm ra một giải pháp Nhờ Ronald - CultureInfo values differ between applications for the same culture. Is this a bug?

Nó chỉ ra rằng thiết lập khu vực được lưu trữ cho mỗi người dùng trong Windows. Đây là điều tôi nên biết. Cập nhật hồ sơ ứng dụng để chạy như bản thân tôi đã tạo ra kết quả tương tự trên cả hai ứng dụng .

Để công bằng, những gì vẫn còn khó hiểu là cách Dịch vụ mạng (tài khoản mà hồ bơi ứng dụng đang chạy) đã có giá trị không chính xác là . Tôi thậm chí không chắc tôi sẽ sửa chữa điều đó như thế nào.

Chỉnh sửa:

Nếu bạn cần cập nhật cài đặt khu vực cho tài khoản dành riêng. Bạn có hai tùy chọn.

Control Panel > Regional Settings > Click the administrative tab and then select "Copy Settings". 

Trên màn hình khởi chạy, đảm bảo bạn chọn "Màn hình chào mừng và tài khoản hệ thống". Các phiên bản cũ hơn của Windows tương tự như tôi tin. Đối với cú đúp. Đăng ký: HKEY_USERS> SID ...> Bảng điều khiển> Quốc tế. Mã định danh bảo mật cho Dịch vụ mạng là: SID: S-1-5-20.

Đảm bảo bạn khởi động lại nhóm ứng dụng để các cài đặt có hiệu lực.

Tôi đã làm # 1 - và nó đã làm một thủ thuật cho tôi!

+0

Cảm ơn rất nhiều! Đã tha cho tôi nhiều giờ :) –

1

Trong trường hợp của ASP.NET, từ

HKEY_USERS\S-1-5-20\Control Panel\International\

S-1-5-20 là định danh an ninh của dịch vụ Mạng "user" (http://support.microsoft.com/kb/243330)

Đối với các loại các ứng dụng, tham khảo tài liệu của hàm GetUserDefaultLocaleName (https://msdn.microsoft.com/en-us/library/windows/desktop/dd318136%28v=vs.85%29.aspx)

Để dễ dàng thay đổi ngôn ngữ của S-1-5-20, xem câu trả lời của sitecorebasics

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