[C#] Localization in VS2005

Pagina: 1
Acties:
  • 286 views sinds 30-01-2008
  • Reageer

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Hallo :)

Ik ben even aan het stoeien gegaan met localizations in VS2005. Wat ik wil proberen is het maken van een applicatie met een standaard taal (Engels, de main assembly), en na het compileren wil ik andere talen eraan kunnen toevoegen, zonder de main assembly te moeten compileren. De vertaling gebeurt via een tekstbestand.

Daarbij heb ik interesse in de namespace "<MainApp>.properties" met daarin het object "Resources". Met dit object heb ik toegang tot de resources in "resources.resx", die standaard door VS2005 wordt aangemaakt. De gegevens die ik invul zijn de engelse teksten. Dus de default language.

Maar dan, stel dat ik een vertaling maak naar het Nederland, van dit resources bestand:
1. Met resgen maak ik hiervan een tekstbestand
2. Ik pas wat strings aan in het tekstbetand.
3. met diezelfde resgen maak ik weer een resources file:

code:
1
resgen nl.txt MainApp.nl.resources


4. En van diezelfde resources maak ik een assembly:

code:
1
al /t:lib /embed:MainApp.nl.resources /culture:nl-NL /out:MainApp.nl-NL.resources.dll


De uitkomst, MainApp.nl-NL.Resources.dll, plaats ik in een map "nl-NL" onder /bin/debug.

In de code vertel ik nu dat de Culture Nederlands is (even om te testen):

[code]Properties.Resources.Culture = new CultureInfo("nl-NL");[code]

Maar wat ik ook doe, ik blijf de tekst uit de oorspronkelijke resources file krijgen (dus Engels) ipv Nederlands (uit nl.txt).

Zie ik iets over het hoofd? Kan dit uberhaupt wel op deze manier?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Moet die naam niet MainApp.Resources.nl-NL.dll zijn ?

https://fgheysels.github.io/


  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
@whoami

Bedankt voor je antwoord: dit was een tikfout in mijn starttopic.

Maar, ik heb de oplossing....

Als je gebruik gaat maken van objecten van namespace "Properties" in het kader van localization, dan moet je even op het volgende letten.

De "properties.Resources.Culture" is niks anders dan een eigenschap waarin verder niks gebeurt. Je slaat hier bijvoorbeeld de huidige culture op, die je laten kan gebruiken in je applicatie. Maar het zetten van een value in dit property heeft totaal geen effect op het uitvoeren van localizations enzovoort.

Dus, ben ik verplicht om de "CurrentCulture" en "CurrentUICulture" van de thread te gebruiken. En jewel, in één keer ging het werken.

Daarbij merkte ik wel op het volgende.
Standaard heb je in je design de map "Properties" het bestand "Resources.resx". Bij een default language (in mijn geval engels) kan je dit vullen met standaard waarden. Maar als je een Nederlandse vertaling van resources tijdens design wil toevoegen, dan kan je geen resources file aanmaken in de map Properties rechtsreeks. Maar maak dan even buiten dit map een resources file aan, en versleep die dan naar de map Properties. Als je de taal dan veranderd naar Nederlands, wordt dit resoruces file gebruikt.

Ik hoop dat het allemaal duidelijk is.