2013-03-12 39 views
5

Tôi gần như đã hoàn thành ứng dụng C# của mình; điều duy nhất còn lại là thực hiện hỗ trợ đa ngôn ngữ.Hỗ trợ nhiều ngôn ngữ trong một ứng dụng Winforms

Tôi đã tạo các tệp tài nguyên chứa chuỗi cho một vài ngôn ngữ cho tất cả văn bản được hiển thị trên màn hình.

Ví dụ về tập tin tiếng Anh Resource tôi:

Name     | Value      | Comment 
------------------------------------------------------------------------------ 
lblName     | Name:      | Name EN 

Ví dụ về tập tin Resource Hà Lan của tôi:

Name     | Value      | Comment 
------------------------------------------------------------------------------ 
lblName     | Naam:      | Name NL 

Làm thế nào tôi có thể ràng buộc lĩnh vực Value đến Text tài sản của tôi Label (lblName)?

Tôi đang sử dụng .NET Framework 3.5.

+1

Điều đó hoàn toàn phụ thuộc vào khung công tác GUI mà bạn không chỉ định. –

+0

Tôi đang sử dụng Winforms – Max

+2

Xem bài viết này [Quá trình bản địa hóa bằng cách sử dụng các tệp tài nguyên trong .NET] (http://www.codeproject.com/Articles/79397/Localization-process-by-using-resource-files-in -NE) –

Trả lời

-3

Đặt giá trị của các ngôn ngữ khác nhau trong một bảng cơ sở dữ liệu.

Cho phép người dùng chọn ngôn ngữ.

Theo lựa chọn ngôn ngữ, hãy tìm nạp dữ liệu từ cơ sở dữ liệu về ngôn ngữ cụ thể.

Và sau đó liên kết nó với văn bản nhãn.

+1

-1 - OP đang sử dụng tệp Tài nguyên chứ không phải cơ sở dữ liệu. –

+3

Đó không phải là cách thích hợp để làm điều đó Tôi nghĩ rằng, các tập tin tài nguyên hoặc không được tạo ra cho không có gì – Max

+0

Đây thực sự là một giải pháp tốt, nhưng để dịch dữ liệu được lấy từ cơ sở dữ liệu, các ô văn bản từ các bảng tra cứu chẳng hạn. Trong trường hợp này nó vô dụng. 1 cho nỗ lực. :) –

-2

Hãy thử điều này:

<asp:Label runat="server" Text="<%$ Resources:DutchLanguage, Value %>"></asp:Label> 
+0

Tôi đang sử dụng Windows Forms và nó là một ứng dụng Desktop C#, không phải là một trang web (ASP). – Max

+0

Bạn đề cập đến ứng dụng C#, nhưng không chỉ định nó từ đầu –

+1

Sau đó, tôi nên đã sử dụng: Ứng dụng web và sử dụng thẻ ASP và có một thẻ: WinForms. – Max

0

Tôi biết câu hỏi này đã được hỏi một thời gian dài trước đây, nhưng vì không có câu trả lời ở đây là những gì tôi đề nghị:

Để truy cập vào một tập tin tài nguyên trong C# bạn có thể sử dụng a ResourceManager. Đầu tiên hãy tạo trình quản lý tài nguyên của bạn tùy thuộc vào ngôn ngữ curent. Bạn có hai tùy chọn cho việc này. Bạn có thể sử dụng nút chuyển hoặc câu lệnh if (nếu ngôn ngữ được xác định bởi một menu) hoặc sử dụng nội địa hóa để sử dụng văn hóa hiện tại của máy tính. Cuối cùng, với cả hai cách bạn có thể gọi phương thức GetString() cung cấp khóa mà tôi tin rằng trong trường hợp của bạn là lblName.

N.B: Trong ví dụ dưới đây, tôi sử dụng phương pháp đầu tiên để truy xuất ngôn ngữ từ trình đơn.

string selectedLanguage = comboBoxLang.Text; // Comes from a menu option 
string resourceFile = string.Empty; 

/***/ 
Logic to retrieve the proper resourceFile depending on the selectedLanguage. 
/***/ 

ResourceManager rm = new ResourceManager(resourceFile, Assembly.GetExecutingAssembly()); 

// Set your label text. 
lblName.Text = rm.GetString("lblName"); 
Các vấn đề liên quan