Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C# VS2008] Lokalizacja programu (aplikacja wielojęzykowa)

marcinj12 30 Gru 2009 21:49 1217 0
  • #1 30 Gru 2009 21:49
    marcinj12
    Poziom 40  

    Witam,

    Nie mogę sobie poradzić z następującym problemem:
    Piszę aplikację która składa się z formy głównej oraz ładowanych na nią "modułów" w postaci kontrolek użytkownika skompilowanych do .dll i trzymanych w osobnym katalogu z modułami.
    Struktura katalogów jest taka:

    Code:

    C:\Program\Aplikacja.exe (główna aplikacja)
    C:\Program\Modules\Modul1\modul1.dll (pierwszy moduł)
    C:\Program\Modules\Modul2\modul2.dll (drugi moduł)
    ....

    Aplikacja ma obsługiwać więcej niż jeden język. Z lokalizacją formy głównej poradziłem sobie.

    Teraz chciałbym zlokalizować kontrolki - moduły.

    Kiedy robię to w ten sposób:
    1. Ustawiam kontrolce Localizable: true,
    2. Dodaję do projektu np. 3 pliki z tłumaczeniami: lang.resx, lang.pl-PL.resx, lang.en-US.resx
    to przy kompilacji tworzą się katalogi: pl-PL oraz en-US, każdy zawierający plik modul1.resources.dll.
    W kontrolce, na potrzeby testu, odwołuję się do niego tak:
    Code:
    CultureInfo ci = new CultureInfo("en-US");
    
    Thread.CurrentThread.CurrentUICulture = ci;
    Thread.CurrentThread.CurrentCulture = ci;

    RM = new ResourceManager("modul1.lang", this.GetType().Assembly);

    MessageBox.Show(RM.GetString("zla_struktura"));


    Niestety, ten sposób działa tylko wtedy, kiedy katalog en-US jest umieszczony w C:\Program\, podczas gdy ja bym chciał go umieścić np. w C:\Program\Modules\Modul1\

    PYTANIE: czy można to jakoś "obejść"? Może ma ktoś gotowy kod jak "dobrać się" do plików .dll z zasobami umieszczonymi w dowolnej lokalizacji?

    0 0