[C#] Globalizacja za pomocą .resx


(Gkuczmik89) #1

Witam!

Mam do przetłumaczenia duży projekt, w którym mają być dostępne 3 języki: Polski (domyślny), Angielski i Niemiecki. Jak na razie stworzyłem 2 pliki zasobów .resx na razie dla pewnej 1 formatki, których wiersze wyglądają następująco:

Name | Value

nazwa kontrolki.Text | jakiś tekst w danym języku

Czy istnieje możliwość przypisania wszystkim kontrolkom na tej formatce wartości ? Od razu zaznaczam, że coś takiego jak przypisanie wartości każdej z kontrolek osobno nie wchodzi w grę, bo projekt jest dość spory:

System.Resources.ResourceManager rm = new System.Resources.ResourceManager("Resources", System.Reflection.Assembly.GetExecutingAssembly());

this.Text = rm.GetString("MainForm.Text");

(Fiołek) #2

Jeśli używasz WPF, to sposób jest dość prosty - kompilujesz dla jednego(Angielski) języka, generujesz Uid-y dla kontrolek, tłumaczysz teksty dla poszczególnych Uid, generujesz assembly z zasobami dla innych języków.

Roboty jest cała masa, ale da się to zrobić. Polecam poczytać o tym na MSDN, bo może inny sposób będzie odpowiedniejszy dla tego projektu. Artykuł na MSDN.

Dla WinForms sposób jest chyba podobny, ale nigdy tego nie robiłem. Artykuł na CodeProject wydaje się być dobrym punktem startu.