Avatar billede viht Nybegynder
27. januar 2005 - 10:29 Der er 4 kommentarer

Localization og Winforms

Hej.

Jeg sidder og kokser med en Winform, som jeg gerne vil localize. Et krav er at benytte Satellite assemblies og have support for en neutral culture.
Et andet krav er IKKE at benytte Form's Localizable property.. og dermed lade VS.NET generere rescource filer selv. På den måde bliver alle properties på formen nemlig klemt ned i .resx filer, og det ønsker jeg ikke.

Indtil videre har jeg følgende struktur:

bin\
  debug\
      en-us\
        MinApplikation.resx
        MinApplikation.resources
        MinApplikation.resources.dll (engelsk culture)
      da-dk\
        MinApplikation.resx
        MinApplikation.resources
        MinApplikation.resources.dll (dansk culture)
      MinApplikation.exe
      MinApplikation.resx
      MinApplikation.resources
      MinApplikation.resources.dll (neutral culture)

Problemet er at applikationen ikke virker, hvis jeg programmatisk sætter en culture der ville forcere et fallback til neutral culture, feks:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
Ovenstående culture findes ikke i en undermappe, og derfor skulle der teoretisk ske et fallback til neutral culture, men det sker ikke!

Jeg har post build events der først vha. resgen.exe genererer .resources filer udaf mine .resx filer og derefter laver .resources filerne til .dll (satellite assemblies).

Udover det bruger jeg al.exe til at linke satellite assemblies'ne til hovedassemblien (MinApplikation.exe)

Exception:

An unhandled exception of type 'System.Resources.MissingManifestResourceException' occurred in mscorlib.dll

Additional information: Could not find any resources appropriate for the specified culture (or the neutral culture) in the given assembly.  Make sure "MinApplikation.resources" was correctly embedded or linked into assembly "MinApplikation".

Så det lyder til at den ikke mangter at finde min neutrale satellite assembly, selvom den eksisterer.

Hjælp!
Avatar billede viht Nybegynder
27. januar 2005 - 10:32 #1
Det skal lige med at det udmærket virker når jeg anvender dansk eller engelsk culture.. altså sætter  CurrentUICulture til "en-US" eller "da-DK"
Avatar billede burningice Nybegynder
27. januar 2005 - 11:52 #2
umiddelbart lyder det som om du har kørt Al med forkert /culture-parameter på din neutrale resource
Avatar billede burningice Nybegynder
27. januar 2005 - 11:55 #3
i værste fald har du helt udeladt den, og det må man ikke...

The /culture option specifies the culture of the resource to compile. The runtime uses this information when it searches for the resources for a specified culture. If you omit this option, Al.exe still compiles the resource, but the runtime will not be able to find it when a user requests it.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcreatingsatelliteassemblies.asp

En neutral culture er bare en tom streng

al /t:lib /embed:strings.resources /culture: /out:MyApp.resources.dll
Avatar billede viht Nybegynder
27. januar 2005 - 12:36 #4
Her er strengen jeg kalder al.exe med:
al.exe /culture: /out:MinApplikation.resources.dll /embed:MinApplikation.resources,MinApplikation.resources /template:MinApplikation.exe
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester