Na pewno obaj zauwazyliscie, ze jak edytujecie formatke/kontrolke, to czasem/czesto tworzy sie "pod nia" abcde.resx ktory trzyma jakies-tam zasoby dla niej, a w pliku .designer.cs w initializecomponent designer umieszcza linie wyciagajace te zasoby zamiast hardcodowanych wartosci.
Wszysktie resourcemanagery sa przeystosowane do pracy wielo-jezycznej/narodowosciowej. W zaleznosci od S.Threading.Thread.Current.CurrentUICulture, resourcemanager bedzie wybieral albo z domyslnego resx'a, albo z resx.a odpowiadajacego jezykowi watku gui:
- blahblah.resx ----default master fallback
- blahblah.en.resx -- fallback dla jezyka EN
- blahblah.en-US.resx -- zasoby dla jezyka EN kultura US
- blahblah.en-GB.resx -- zasoby dla jezyka EN kultura GB
- blahblah.pl-PL.resx
...itd
tak wiec jesli sobie takie pliki dodacie, natychmiast wepna sie one 'pod' formatke a'la' glowny resx i ich zawartosc podczas kompilacji poleci jako satellite w katalogach /en i /pl. niestety te pliki resx NIE beda nigdy mialy swoich .designer.cs na wzor /properties/resources.resx. visuale do 2008 tego nie potrafily, nawet jesli sie postarac o reczna edycje pliku projektu :|
Jak operujecie na designerze formatek/kontrolek, operujecie na kodzie .designer.cs/initializecomponent oraz na pliku master-fallback formatki, czyli blah.resx. To wie prawie kazdy kto choc raz wlaczyl designera. Malo kto stosunkowo jednak wie, ze designer potrafi takze edytowac pliki formatka.en-us.resx i jemu podobne.
Każda pochodna SWF.Form i SWF.UserControl ktorą mozesz obrabiac click&play w designerze dostarcza 2 PROPERTIES nazywajacych sie: Localizable typu bool oraz Language typu CultureInfo. Wykapitalikowalem slowo dla BorysBe: właściwosci szukaj w "Properties" komponentu ktory edytujesz, taki panel rozwijany z lewej/prawej strony desktopu visuala, z lista roznych Text,BackgroundColor itp... Jak wyswietlisz to dla Form albo UserControl (musisz miec ZAZNACZONA 'pusta przestrzen' edytowanej rzeczy. nie panel, nie button, tylko pusta szarawą przestrzen 'ciała' formy/kontrolki). Tylko one to maja, jako ze sa one sa top-level, rootami w drzewie kontrorek edytora. Zeby dobrac sie do tych properties.
Po ustawieniu Localizable na 'true' nagle aktywuej sie Language i mozna sobie sybrac jezyk aktualnie edytowany. Uwaga: to oznacza, ze jedna formatka bedzie miala jeden glowny, domyslny wyglad, i N innych, zapisanych w .blah.xx-yy.resx. Jezeli wybierzecie jezyk Polski(PL), designer stworzy .pl-PLresx i bedziecie od tej pory poprzez designera edytowac tenze plik, a pozostale zostana bez zmian. Aby powrocic do edycji glownego wygladu, nalezy wybrac Language "puste", to z czubka listy.
Specjalnie napisalem domyslny wygląd a nie 'teksty'. Designerowa lokalizacja formatek pozwala nie tylko na podmiane tekstow. Jezeli przelaczyce sie na .de i przesuniecie button, przelaczycie sie na .pl -- button bedize w starej pozycji. Żadnego szlifowania rozmiaru/pozycji per-pixel w .pl-pl.resx! po porstu przelaczasz jezyk designera, przesuwasz/rozciagasz kontrolke i juz! Wszystkie edytowalne properties oznaczone jako [Localizable] w metadanych podlegaja serializacji do .xx-yy.resx - .Image PictureBoxa - i dla oddzielnych kultur moga byc komplenie inne.
Mechanizm ten ma pewne ograniczenia. Główne i najważniejsze jest takie, że mechanizm jest super - czesc wartosci properties zrzuca do InitializeComponent - a w razie potrzeby rozszczepia wartosc na .resx ----- ale potrafi dostosowywac TYLKO (albo aż) serializowalne wartosci properties'ow. To znaczy, ze nie da rady przy jego pomocy stworzyc formatki, ktora w en-US bedzie miala 2 gridy, a w en-GB dwa listboxy zamiast nich. Ale da se to osiagnac na chama: dac dwa gridy, dac 2 listboxy, w en-US listboxom Enabled/Visible na false, w en-GB gridom..
@narzedzia - IMHO, Visual jest dobry do tego. programista przygotowuje forme z kontrolkami, potem tlumacz moze sie w visualu bawic, przesuwac, przelaczac jezyki itd. Ustawiac teksty, poprawiac uklad i rozmiary to sobie i nastolatek w designerze poradzi.. do edycji pozycji/rozmiaru innych narzedzi niz designer visuala sobie nie wyobrazam, ale moga istniec - ostatecznie 'pulpit edycyjny' designera to jest tez komponent i mozna go z VS wyciagnac i opakowac w boczne narzedzie tylko-do-edycji resx'ow.. Natomiast jest na pewno masa mikrotooli do edycji samych tekstow w resx'ach, wyswietalacych Ci np. tabelarycznie klucz-jezykA-jezykB-jezykC-... i pozwalajacych pozupelniac braki. Kiedys nie chcialo mi sie analogicznego tool'a szukac, wiec w ciagu 45minut z grida i system.blah.resxreader wysmazylem takie samemu.. czyli na sieci powinno byc z cwierc setki komercyjnych plus 6 opensource/darmowych :)
//edit. ostatnio sredni wordcount-per-post mi sie wydluza.. chyba nie mam z kim gadac i nadrabiam:}