zmiana języka aplikacji

0

Witam wszystkich.

Potrzebuje rady jak zabrać się za opcję "zmiana języka aplikacji".

Chcę, żeby było coś takiego:

  • wchodzę w ustawienia programu
  • tam mam opcję zmiana języka aplikacji, czyli combobox z czterema językami (Polski, Angielski, Niemiecki, Rosyjski)
  • i po wybraniu i zatwierdzeniu butonem Zastosuj, chcę żeby po ponownym uruchomieniu aplikacji pojawił się ten język co użytkownik wybrał w opcjach tej aplikacji.

A może ktoś widział przykładową aplikację w C# - Windows Form Application, jak to wygląda mniej więcej. :|

0

A będzie to działało na kilku oknach? Bo mam 10 plików *.exe i chciałbym, żeby cała aplikacja po wybraniu języka miała ten sam język jak pierwsze okno ze zmienionym językiem.

0

A będzie to działało na kilku oknach? Bo mam 10 plików *.exe

Masz każde okno w osobnym pliku? :|

0

Tak. Musiałem to jakoś porozdzielać.

0

Czyli masz 10 oddzielnych aplikacji i chcesz im wszystkim naraz zmieniać język?

0

Tak somekind.

0

To coś chyba jest nie tak w Twoim programie, skoro do działania potrzebuje 10 plików exe. Ewentualnie zrób jakiś zunifikowany XML dla wszystkich.. To nie lepiej było zrobić kilka Form w 1 projekcie? Niż kilka projektów po 1 formie?

0

Ale masz możliwość ich ponownej kompilacji?
Jeżeli tak to możesz zapisać 4 pliki, w którym do numerków 1-500 (np) przypisać poszczególne słowa, w każdym pliku w różnych językach. Potem z jakiegoś 5'tego pliku wczytać który język został wybrany i wczytać ten język.

0

A jakbym miał wszystko to w jednym projekcie. To jak to podzielić na kilka plików *.exe ??

0

Ale po co chcesz to dzielić na kilka plików exe? Bo nie bardzo rozumiem ideę Twojego programu, jakbyś mógł ją po krótce przedstawić, było by łatwiej.

0

Bo jakbym to scalił w jeden plik *.exe to mi wychodzi jakieś 20 mb razem. A w dodatku, chcę mieć jakiś porządek.

0

10 plików .exe jak dla mnie to pierolnik a nie porządek ;)

Chcesz zmieniając w jednym pliku język zmieniać we wszystkich plikach? To chyba tylko i wyłącznie przez plik (powiedzmy *.xml) do którego wszystkie te pliki *.exe będą mieć dostęp podczas ładowania i będą sobie z niego pobierać aktualny język + tłumaczenia kontrolek/tekstów (to już może być w oddzielnym xmlu dla każdego pliku). Inaczej chyba nie za bardzo się da. Chyba że ktoś bardziej doświadczony Ci pomoże.

0

To jest program wielofunkcyjny, więc jakiś podział jest potrzebny.

Pytanie: Czy ja to złącze w jeden projekt, czy da się jakoś zrobić podział na kilka plików? (głównie mi chodzi o *.exe'ki)

0

Nie ma żadnej potrzeby dzielenia tego na tyle exeków. Opisz bardziej jak wyglądają twóje programy i interakcja między nimi, to postaramy Ci się wymyślić lepszą architekturę.

1

Nie ma żadnej potrzeby dzielenia tego na tyle exeków. Opisz bardziej jak wyglądają twóje programy i interakcja między nimi, to postaramy Ci się wymyślić lepszą architekturę.

Chyba że każdy z tych 10 programów robi co innego - tak jakbyś postulował połączenie gcc, g++, ld i strings z pakietu GCC w jeden program żeby nie robić bałaganu.
IMO szukacie błędu u nowy'ego zamiast uwierzyć że ten dziwny podział jest faktycznie potrzebny.

@nowy - Madm4n podał dobry sposób, przy czym .NET stara się tutaj parę rzeczy ułatwić - poszukaj czegoś o lokalizacji i zasobach (pierwszy link na jaki trafiłem - http://www.codeproject.com/KB/dotnet/Localization.aspx). Ogólnie schemat wygląda tak że wczytujesz z jakiegoś zewnętrznego, ustalonego pliku język wybrany ostatnio przez użytkownika i na podstawie tej wiedzy wczytujesz odpowiednie zasoby.

0

No właśnie, ale nie dostałem odpowiedzi na moje pytanie, czy da się podzielić na pliki *.exe w jednym projekcie. Chodzi mi o to, że mam 1 projekt, a kompiluje 5 plików *.exe z tego projektu.

0
MSM napisał(a)

Ogólnie schemat wygląda tak że wczytujesz z jakiegoś zewnętrznego, ustalonego pliku język wybrany ostatnio przez użytkownika i na podstawie tej wiedzy wczytujesz odpowiednie zasoby.

Ogólnie schemat wygląda tak, że najpierw w designerze ustawia się Formie właściwość Localizable na true, następnie wybiera Language, a potem uzupełnia Text dla kontrolek. I tak dalej, z każdym wybranym językiem, oprócz tego wypada też wypełnić dla języka "default". Nie trzeba się też zabawiać z użytkownikiem, bo .NET sprawdzi język ustawiony w systemie i automatycznie ustawi w aplikacji najlepiej dopasowany. Oczywiście można łatwo wymusić zmianę języka ustawiając właściwość Thread.CurrentCulture.

IMO szukacie błędu u nowy'ego zamiast uwierzyć że ten dziwny podział jest faktycznie potrzebny.

Ja nie wierzę, bo jeśli ktoś nie potrafił znaleźć w necie tego, co przed chwilą opisałem ani dojść do tego metodą Monte-Carlo (kliknij-skompiluj-sprawdź czy się udało, bardzo popularna w środowiskach RAD), to znaczy, że jest najprawdopodobniej początkujący, gdzieś się pogubił i skomplikował sobie życie.

nowy napisał(a)

No właśnie, ale nie dostałem odpowiedzi na moje pytanie, czy da się podzielić na pliki *.exe w jednym projekcie. Chodzi mi o to, że mam 1 projekt, a kompiluje 5 plików *.exe z tego projektu.

Nie da się, jeden projekt = jeden plik wynikowy. Nie rozumiem tylko dlaczego robisz aż 10 tych plików *.exe. Na pewno każdy z nich musi być aplikacją z interfejsem użytkownika? Ile jest wszystkich formatek w tych projektach? Nie można tego podzielić jakoś tak, żeby był jeden *.exe i 9 bibliotek dll?

1 użytkowników online, w tym zalogowanych: 0, gości: 1