2012-02-01 30 views
27

Tôi cần thiết lập văn hóa của ứng dụng thông qua tệp App.Config, để "pt-BR" được sử dụng tự động để phân tích ngày mà không cần thông báo thủ công văn hóa cho mỗi thao tác.Làm cách nào để đặt CultureInfo.CurrentCulture từ tệp App.Config?

Theo như tôi biết, có một phần globalization có thể được xác định bên trong phần system.web trong tệp Web.Config, nhưng tôi đang chạy ứng dụng bảng điều khiển và tôi không thể tìm ra điều này.

Bất kỳ ý tưởng nào?

Trả lời

22

Tôi không biết một cách built-in để cài đặt nó từ App.config, nhưng bạn chỉ có thể xác định một quan trọng trong App.config bạn như thế này

<configuration> 
    <appSettings> 
     <add key="DefaultCulture" value="pt-BR" /> 
    </appSettings> 
</configuration> 

và trong ứng dụng của bạn đọc giá trị mà và đặt văn hóa

CultureInfo culture = new CultureInfo(ConfigurationManager.AppSettings["DefaultCulture"]); 
Thread.CurrentThread.CurrentCulture = culture; 
Thread.CurrentThread.CurrentUICulture = culture; 
+1

Không hoạt động cho chương trình của bên thứ ba. –

+1

Tôi nghĩ rằng đây là cách tiếp cận bạn nên thực hiện nếu bạn muốn ghi đè văn hóa hệ thống trong ứng dụng. Thông thường, văn hóa sẽ tự động được chọn từ cài đặt của hệ điều hành. Thay vì cứng mã hóa văn hóa như thế này bình thường tôi sẽ dựa vào các máy tính khách hàng có khu vực và ngôn ngữ của họ thiết lập chính xác. – Mick

1

Không tự mình làm theo cách đó, nhưng rõ ràng. Ngay từ khi bạn có thể tức là trước khi InitialiseComponent nếu nó UICulture, nó chỉ là

Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR") 

và hay

Thread.CurrentThread.CurrentUICulture = new CultureInfo("pt-BR") 

Bất cứ điều gì bạn không muốn sử dụng các nền văn hóa hiện nay để sử dụng InvariantCulture

Cá nhân , Tôi muốn rời khỏi nền văn hóa hiện tại một mình. Sử dụng InvariantCulture cho toàn cầu hóa, tôi không muốn thay đổi. Sau đó đặt văn hóa trung tính trong thuộc tính dự án.

Tôi luôn cảm thấy rằng sửa văn hóa hiện tại để mã hoạt động mặc dù đó là sự lựa chọn cá nhân của người dùng khác với một số loại cảnh sát khó chịu.

+0

Về điểm "Cá nhân" của bạn - Điều gì sẽ xảy ra nếu bạn đang triển khai hệ thống Vương quốc Anh vào trang web của khách hàng và hình ảnh vàng là nền văn hóa Hoa Kỳ mặc định? Điều này xảy ra tất cả thời gian ở Anh, sau đó chúng tôi nhận được khiếu nại khi '{0: c}' cho thấy dấu hiệu đồng đô la! – tommed

+2

Nếu họ muốn Văn hóa Hoa Kỳ và một số nhảy hoop là cần thiết phải không? Hãy nghĩ rằng tôi chỉ coi nó như một ứng dụng đa tiền tệ tại thời điểm đó, tức là mỗi giá trị tiền tệ sẽ có một thuộc tính tiền tệ, và để lại văn hóa tốt ra khỏi nó, asie từ có thể mặc định tiền tệ. –

+0

Tôi không đồng ý, nó chỉ là một sự xấu hổ mà ASP.NET cung cấp cho bạn công cụ này miễn phí, xấu hổ toàn cầu hóa là một phần của system.web – tommed

-2

using System.Threading;

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo ("bn-BD");

// Đối với Bangladesh. Tôi sử dụng dòng này trên mọi sự kiện tải biểu mẫu trang

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