2013-03-12 41 views
5

Prawie skończyłem moją aplikację C#; pozostaje tylko wdrożyć obsługę wielu języków.Obsługa wielu języków w aplikacji WinForm

Mam już utworzone pliki zasobów, które przechowują ciągi dla kilku języków dla całego tekstu wyświetlanego na ekranie.

Przykład mojego pliku English Zasobów:

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

Przykład mojego holenderskiego pliku zasobów:

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

Jak mogę powiązać pole Value na własność moich Label (lblName) Text?

Używam .NET Framework 3.5.

+1

To całkowicie zależy od struktury GUI, której nie określono. –

+0

Używam WinForm – Max

+2

Przeczytaj ten artykuł [Proces lokalizacji przy użyciu plików zasobów w .NET] (http://www.codeproject.com/Articles/79397/Localization-process-by-using-resource-files-in -NE) –

Odpowiedz

-3

Wprowadź wartości różnych języków w jednej tabeli bazy danych.

Pozwól użytkownikowi wybrać język.

Zgodnie z wyborem języka pobierz dane z bazy danych o danym języku.

A następnie powiąż go z tekstem etykiety.

+1

-1 - OP używa plików zasobów, a nie bazy danych. –

+3

To nie jest właściwy sposób, aby to zrobić Myślę, że pliki zasobów lub nie zostały utworzone na darmo – Max

+0

To jest rzeczywiście dobre rozwiązanie, ale do tłumaczenia danych pobranych z bazy danych, komórki tekstowe z tabel wyszukiwania na przykład. W tym przypadku jest to bezużyteczne. +1 za wysiłek. :) –

-2

Spróbuj tego:

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

Używam Windows Forms i jest to aplikacja Desktop #, a nie strona internetowa (ASP). – Max

+0

Wspomniałeś aplikację C#, ale nie określiłeś jej od początku. –

+1

Następnie powinienem był użyć: aplikacji internetowej i użyłem tagu ASP i jest tag: WinForms. – Max

0

Wiem, że to pytanie zostało zapytać dawno temu, ale ponieważ nie było odpowiedzi oto co proponuję:

Aby uzyskać dostęp do pliku zasobów w C# można użyć a ResourceManager. Najpierw utwórz menedżera zasobów w zależności od bieżącego języka. Masz dwie możliwości. Możesz użyć przełącznika lub instrukcji (jeśli język jest określony przez menu) lub użyć lokalizacji, aby użyć aktualnej kultury komputera. Na koniec, w obie strony, możesz wywołać metodę GetString(), podając klucz, który moim zdaniem jest w lblName.

N.B: W poniższym przykładzie używam pierwszej metody, która pobiera język z menu.

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");