Witam
Próbuje ogarnąć wielojęzyczność w Visual Studio, przeczytałam kilka poradników a mimo to nie mogę sobie poradzić. Nie mam pojęcia gdzie popełniam błąd, dlatego wrzucam mój projekt do załącznika i może ktoś łaskawym okiem spojrzy na to i powie co jest nie tak.
Pozdrawiam
Marta ;)
-
Wszystkie pliki do lokalizacji muszą mieć taką samą nazwę:
Slownik.resx
Slownik.pl-PL.resx
Slownik.en-US.resx -
Powinien istnieć plik domyślny(niewskazujący na żaden język). Jeśli plik dla danego języka nie zostanie znaleziony(lub klucz w danym pliku) użyte zostaną wartości domyślne.
Slownik.resx -
Jeśli dodasz plik ".resx" przez Add Item w projekcie, VS wygeneruje klasę do szybkiego i bezproblemowego dostępu do Kluczy w pliku domyślnym.
Slownik.designer.cs
string localizedString = Slownik.String1;
- Jeśli chcesz się ręcznie odwoływać to danych w tym pliku to :
System.Resources.ResourceManager rm = new System.Resources.ResourceManager("[Namespace].Slownik", typeof(Slownik).Assembly);
string localizedString = rm.GetString("String1", new CultureInfo("pl-PL"));
//albo dla plikow resx
System.Resources.ResourceManager.CreateFileBasedResourceManager(***)
@j_s_r_n, dzięki za pomoc, ale mi to nadal nie działa, mógłbyś zmodyfikować mój program, aby działał prawidłowo?
Poprawiłam wszystkie nazwy tak jak podałes
Slownik.resx (moj domyslny - polski)
Slownik.de-DE.resx
Slownik.en-US.resx
Dodałam właśnie ".resx" przez Add Item. Klucze mogę zmieniać i nadawać im wartości, ale czemu po kompilacji i ustawieniu jezyka wyświetlany jest klucz a nie jego wartość ;(
Jeśli nadal wyświetlasz tak:
MessageBox.Show("String1");
zamiast tak:
System.Resources.ResourceManager rm = new System.Resources.ResourceManager("WindowsFormsApplication1.Slownik", typeof(Slownik).Assembly);
MessageBox.Show(rm.GetString("String1", new CultureInfo("pl-PL")));
to dlatego.
Projekt
@j_s_r_n
Dziękuje Ci bardzo ;)
Jednak mam jeszcze dwa nurtujące mnie pytania
- Mam napis na buttonie ustawiony w propertisach "jezyki.Slownik.String1" to wyświetla mi dosłownie "jezyki.Slownik.String1" a nie jego wartość.
- Klikam na formatce głównej PPM i ustawiam w propertisach język domyślny jako angielski to czemu automatycznie nie odnajduje języka?
Witam,
Tutaj znajdziesz artykuł o tym jak zmienić język formatek w czasie działania programu. Zawiera on też kilka linków do podstaw jak zmieniać język formatki i jak wszystko konfigurować.
http://rtarlowski.blogspot.com/2011/02/c-change-form-language-at-runtime.html
Pozdrawiam,
chesti