2012-05-18 36 views
8

Tôi đã khu trú ExportForm của tôi sang tiếng Đức (de) và Nga (ru) như bạn có thể xem dưới đây: .NET Localization - cách đặt ngôn ngữ?

Nếu CultureInfo của tôi là Đức (Áo-de-AT) thì tất cả là OK, tôi thấy Định dạng dịch sang tiếng Đức:

string specCult = "de-AT"; 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(specCult); 

Nhưng tôi thấy giao diện người dùng tiếng Anh với Nga (ru-rU) CultureInfo

string specCult = "ru-RU"; 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(specCult); 

Mặc dù nếu tôi sử dụng "ru" thay vì "ru-rU" để tạo CultureInfo nó hoạt động:

string specCult = "ru"; 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(specCult); 

Bạn có thể giúp tôi những gì có thể gọi là vấn đề không? Hoặc hãy chỉ cho tôi một hướng để điều tra vấn đề.

+0

Hãy thử thêm tệp tài nguyên trống cho 'ru-RU'. Các tài nguyên không tìm thấy trong nó sẽ rơi trở lại tệp 'ru'. – Oded

+0

Rất lạ, nhưng ngay cả khi tôi thêm một tệp tài nguyên không trống cho ru-RU, tôi không thể hiển thị nó bằng Thread.CurrentThread.CurrentUICulture = new CultureInfo ("ru-RU") –

+0

Tôi thấy điều này rất lạ khi xem xét bạn không thấy vấn đề như vậy với "de-AT" (và nó hoạt động với "ru"). Trong chương trình gỡ rối của bạn, bạn có thể kiểm tra những gì Thread.CurrentThread.CurrentUICulture được thiết lập để sau khi bạn đã gán nó mới CultureInfo ("ru-RU") ... Tôi tự hỏi, nếu vấn đề là trong constructor CultureInfo. – Clafou

Trả lời

0

ru là tên trung lập cho văn hóa Nga và ru-Ru là tên của văn hóa Nga (Nga) cụ thể.

This is taken from MSDN link

Khi khởi động, ví dụ thiết lập nền văn hóa hiện tại và hiện tại UI văn hóa đến Nga (Nga) trên tất cả các hệ thống ngoại trừ những người trên đó văn hóa hệ thống mặc định là đã Nga (Nga). Nếu mặc định văn hóa hệ thống đã là tiếng Nga (Nga), mã đặt văn bản hiện tại và văn bản giao diện người dùng hiện tại sang tiếng Anh (Hoa Kỳ).

Here is other good explanation

Nếu các nguồn lực cho một nền văn hóa cụ thể không có sẵn trong hệ thống điều hành, các nguồn lực cho nền văn hóa trung tính đi kèm là sử dụng. Nếu không có tài nguyên cho văn hóa trung tính, các tài nguyên được nhúng trong cụm chính được sử dụng.

Danh sách ngôn ngữ trong API Windows hơi khác với danh sách các nền văn hóa được hỗ trợ bởi .NET Framework . Ví dụ, nếu cần có khả năng tương tác với Windows, thông qua cơ chế p/invoke, ứng dụng sẽ sử dụng một nền văn hóa cụ thể được xác định cho hệ điều hành . Sử dụng văn hóa cụ thể đảm bảo tính nhất quán với miền địa phương tương đương của Windows, được xác định bằng một mã định danh địa phương là giống như LCID.

+0

Bạn cần đọc về những hạn chế. Điều này không giải quyết được vấn đề. – Oded

2

Tôi đã xác định sự cố: ru-RU được chọn làm ngôn ngữ trung lập trong cài đặt lắp ráp dự án chính của tôi.

MSDN: Thuộc tính NeutralResourcesLanguage thông báo cho Trình quản lý tài nguyên của ngôn ngữ được sử dụng để hiển thị tài nguyên của văn hóa trung tính cho một hội đồng. Khi nó tìm kiếm các tài nguyên trong cùng một nền văn hóa như ngôn ngữ tài nguyên trung lập, ResourceManager sẽ tự động sử dụng các tài nguyên được đặt trong assembly chính.Nó thực hiện điều này thay vì tìm kiếm một hội đồng vệ tinh có văn hóa giao diện người dùng hiện tại cho luồng hiện tại. Điều này cải thiện hiệu suất tra cứu cho tài nguyên đầu tiên mà bạn tải và có thể làm giảm bộ làm việc của bạn.

http://msdn.microsoft.com/en-us/library/bb385967.aspx

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