2012-10-16 19 views
6

Tôi đang làm việc trên một ứng dụng 4.5 .net mà cần phải có ngôn ngữ mult hỗ trợ các nền văn hóa đa, vvtạo tùy chỉnh CultureInfo cho đất nước, kết hợp ngôn ngữ

Sau đây là danh sách mẫu của Quốc gia/Ngôn ngữ

  • Nga/Nga
  • Bỉ/Pháp
  • Bỉ/Hà Lan

Đối với tất cả các bên trên, có một đối tượng CultureInfo có thể được tạo ra dựa trên các tên văn hóa trên

  • ru-RU
  • fr-BE
  • nl-BE

Khi người dùng vào trang web, tôi đặt Thread.CurrentThread.CurrentCulture và Thread.CurrentThread.CurrentUICulture vào văn hóa được tạo với các tên ở trên ví dụ.

Thread.CurrentThread.CurrentCulture = new CultureInfo("nl-BE", false) 
Thread.CurrentThread.CurrentUICulture = new CultureInfo("nl-BE", false) 

Tất cả các tên trên đều là tên văn hóa hợp lệ.

Tuy nhiên, tôi không cần thêm tên văn hóa, ngôn ngữ tiếng Anh khác ở Nga. Nhưng vấn đề là mã en-RU là không hợp lệ vì vậy khi tôi tạo new CultureInfo("en-RU", false) tôi nhận được một CultureNotFoundException như en-RU là không hợp lệ.

Với văn hóa này, tôi muốn định dạng của Nga về số, ngày, v.v ... nhưng tôi muốn ngôn ngữ trên trang web là tiếng Anh. Có thể tạo ra các đối tượng CultureInfo tùy chỉnh cho các tên văn hóa không hợp lệ với hành vi của đất nước (Nga) không?

Trả lời

4

Bạn có thể phải trộn và kết hợp - có đối tượng văn hóa cho tiếng Anh mà bạn sử dụng cho văn bản tiếng Anh nhưng đối tượng văn hóa ru-Ru (tiếng Nga) để định dạng số.

Hoặc thậm chí tạo ra một nền văn hóa tốt hơn tùy chỉnh kết hợp hai

Create custom culture in ASP.NET

+0

Câu trả lời này là đầu tiên và được liên kết cho một bài viết SO thích hợp. Điều này xứng đáng là câu trả lời. – Totero

0

Bạn nên sử dụng CultureInfo.InvariantCulture tài sản

Văn hóa bất biến là văn hóa-insensitive; nó được liên kết với ngôn ngữ tiếng Anh nhưng không được liên kết với bất kỳ quốc gia/khu vực nào. Bạn chỉ định văn bản bất biến theo tên bằng cách sử dụng chuỗi rỗng ("") trong cuộc gọi đến phương thức khởi tạo CultureInfo. CultureInfo.InvariantCulture cũng truy xuất một thể hiện của văn hóa bất biến. Nó có thể được sử dụng trong hầu như bất kỳ phương pháp nào trong không gian tên System.Globalization yêu cầu một nền văn hóa. Các đối tượng được trả về bởi các thuộc tính như CompareInfo, DateTimeFormat và NumberFormat cũng phản ánh chuỗi so sánh và các quy ước định dạng của văn hóa bất biến.

CultureInfo.InvariantCulture Property

Đây là tùy chọn khác Custom Global Application Culture

5

Có possbile để tạo ra tùy chỉnh CultureInfo đối tượng cho tên văn hóa không hợp lệ

Yes.

Sử dụng CultureAndRegionInfoBuilder để giúp tạo tùy chỉnh CultureInfo. (NB. Một khi bạn có mã để tạo ra một nền văn hóa, các thiết lập để làm điều này có thể được lưu vào XML và sau đó được tải, ví dụ từ một tài nguyên, cần ít mã hơn trong thời gian chạy.)

+1

[Đây là] (http://en.csharp-online.net/Using_Custom_Cultures%E2%80%94Uses_for_Custom_Cultures) một hướng dẫn tốt để thực hiện việc này. Nó được viết cho .NET 2.0, vì vậy nếu bạn đang sử dụng phiên bản .NET mới hơn, bạn có thể muốn kiểm tra xem nó có không được chấp nhận hay không. –

+0

@dario_ramos liên kết đã chết, không may là –

+0

@Sam, rất tiếc khi nghe điều đó. đây là [phiên bản lưu trữ cuối cùng.] (https://web.archive.org/web/20130707154229/http://en.csharp-online.net/Using_Custom_Cultures%E2%80%94Uses_for_Custom_Cultures) Hãy kiên nhẫn với thời gian tải : P –

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