[VB.NET] CurrentUICulture veranderen bij runtime

Pagina: 1
Acties:

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 13:56

Rhapsody

In Metal We Trust

Topicstarter
Goedemorgen,

Ik ben op zoek naar de juiste manier om tijdens het runnen van je applicatie dynamisch van taal te kunnen veranderen.
Dus, even heel simpel, een formpje met wat labels en twee buttons, engels en nederlands. Wanneer ik op 1 van die knoppen druk moeten alle labels in de juiste taal weergegeven worden.

Na wat uitzoekwerk op diverse websites (MSDN, Got, Google results) lijkt het alsof het enkel mogelijk is door de CurrentUICulture property in de constructor van je form/applicatie te zetten.
Dit betekent dat het dus niet mogelijk is om dynamisch te veranderen...
Is mijn conclusie juist? En weet iemand alternatieven hoe ik dit wel kan realiseren?

🇪🇺 pro Europa!


  • whoami
  • Registratie: December 2000
  • Laatst online: 27-04 23:03
Je kan die code toch ook in een button_click kwijt ?

Echter, afaik is het wel zo dat die 'settings' niet automatisch veranderd worden. Als je voor je form bv een versie gemaakt hebt voor culture a en een voor culture b, dan zal de culture-verandering niet automtisch gedaan worden.

Wat ik wel vind is dit:
he user can choose the culture he wants and upon restarting the application, the selected language will be displayed. Restarting the application is necessary to ensure that the culture is changed since changing during runtime can be unreliable.
Je kan de CurrentUICulture trouwens niet in alle gevallen veranderen. Enkel fully trusted code kan dit doen.
Manipulating threads is dangerous because of the security state associated with threads. Therefore, this permission should be given only to trustworthy code, and then only as necessary. You cannot change a thread's culture in semi-trusted code.

https://fgheysels.github.io/


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 13:56

Rhapsody

In Metal We Trust

Topicstarter
whoami schreef op woensdag 19 oktober 2005 @ 09:34:
Je kan die code toch ook in een button_click kwijt ?

Echter, afaik is het wel zo dat die 'settings' niet automatisch veranderd worden. Als je voor je form bv een versie gemaakt hebt voor culture a en een voor culture b, dan zal de culture-verandering niet automtisch gedaan worden.
En dat is nu net wat ik rgaag zou willen bereiken, het automatisch veranderen van de taal. Maar dat is dus inderdaad niet mogelijk zonder de applicatie te herstarten?

🇪🇺 pro Europa!


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 26-04 09:25

pjvandesande

GC.Collect(head);

Rhapsody schreef op woensdag 19 oktober 2005 @ 09:44:
[...]


En dat is nu net wat ik rgaag zou willen bereiken, het automatisch veranderen van de taal. Maar dat is dus inderdaad niet mogelijk zonder de applicatie te herstarten?
Je kunt zelf een voor je strings alles opslaan in een Resource file en deze gewoon opnieuw uitlezen voor een anderen taal. Dat is toch niet zo'n probleem?

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 13:56

Rhapsody

In Metal We Trust

Topicstarter
questa schreef op woensdag 19 oktober 2005 @ 10:07:
[...]


Je kunt zelf een voor je strings alles opslaan in een Resource file en deze gewoon opnieuw uitlezen voor een anderen taal. Dat is toch niet zo'n probleem?
Ik begrijp je even niet?

🇪🇺 pro Europa!


  • whoami
  • Registratie: December 2000
  • Laatst online: 27-04 23:03
^^
Dat kan je idd doen; echter, als je je forms zelf ook gelocalized hebt (bv, de grootte van de buttons, of de positie, etc...), dan is het wel een probleem.
Wat questa wil zeggen, is, dat je mbhv een ResourceManager gewoon nog eens alle 'vertaalbare' strings kunt ophalen voor iedere control.
Maar als ik jouw post zo lees, maak jij gebruik van de mogelijkheid die .NET je biedt om per 'culture' een andere 'versie' van je form te maken.

[ Voor 58% gewijzigd door whoami op 19-10-2005 10:10 ]

https://fgheysels.github.io/


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 13:56

Rhapsody

In Metal We Trust

Topicstarter
whoami schreef op woensdag 19 oktober 2005 @ 10:09:
^^
Dat kan je idd doen; echter, als je je forms zelf ook gelocalized hebt (bv, de grootte van de buttons, of de positie, etc...), dan is het wel een probleem.


[...]

Wat questa wil zeggen, is, dat je mbhv een ResourceManager gewoon nog eens alle 'vertaalbare' strings kunt ophalen voor iedere control.
Maar als ik jouw post zo lees, maak jij gebruik van de mogelijkheid die .NET je biedt om per 'culture' een andere 'versie' van je form te maken.
Op dit moment maak ik nog nergens gebruik van, ik ben het nu aan het testen wat de beste manier is. In VB zou je gewoon alle teksten uit een resource file halen en dan handmatig alle controls te voorzien van de juiste tekst, maar met .NET is er de localizationproperty dus zodoende.

Dus als ik enkel maar de teksten wil vervangen kan ik beter handmatig de teksten zetten? Middels een resource file.

[ Voor 9% gewijzigd door Rhapsody op 19-10-2005 10:15 ]

🇪🇺 pro Europa!


  • whoami
  • Registratie: December 2000
  • Laatst online: 27-04 23:03
In .NET kan je ook gebruik maken van resource files.

Imo is dat in sommige gevallen ook beter vind ik (bv, als je de controls zelf niet wilt veranderen per culture). Gebruik maken van de localizationproperty vind ik nogal omslachtig, en het zorgt ook voor een grotere executable. Ik vind het ook nogal onduidelijk om te zien voor welke culture's je nu eigenlijk een versie hebt gemaakt.

https://fgheysels.github.io/


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 13:56

Rhapsody

In Metal We Trust

Topicstarter
whoami schreef op woensdag 19 oktober 2005 @ 10:15:
In .NET kan je ook gebruik maken van resource files.

Imo is dat in sommige gevallen ook beter vind ik (bv, als je de controls zelf niet wilt veranderen per culture). Gebruik maken van de localizationproperty vind ik nogal omslachtig, en het zorgt ook voor een grotere executable. Ik vind het ook nogal onduidelijk om te zien voor welke culture's je nu eigenlijk een versie hebt gemaakt.
Ok, dus dan zou ik het beste handmatig alle teksten kunnen zetten middels resource files?

🇪🇺 pro Europa!


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 26-04 09:25

pjvandesande

GC.Collect(head);

Rhapsody schreef op woensdag 19 oktober 2005 @ 10:18:
[...]

Ok, dus dan zou ik het beste handmatig alle teksten kunnen zetten middels resource files?
Dit doet .NET ook under the hood met je Exception messages.
Kijk is naar de ResourceManager, je maakt dus 1 groot bestand aan met al je string's en dit per taal. Als iemand de taal verandert haal je al je string opnieuw op uit een ander bestand met een anderen taal.

Dit is een veel gebruikte methode.

Bedankt whoami voor het uitleggen van mijn gedachte :Y)

[ Voor 7% gewijzigd door pjvandesande op 19-10-2005 10:23 ]


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 13:56

Rhapsody

In Metal We Trust

Topicstarter
questa schreef op woensdag 19 oktober 2005 @ 10:23:
[...]


Dit doet .NET ook under the hood met je Exception messages.
Kijk is naar de ResourceManager, je maakt dus 1 groot bestand aan met al je string's en dit per taal. Als iemand de taal verandert haal je al je string opnieuw op uit een ander bestand met een anderen taal.

Dit is een veel gebruikte methode.

Bedankt whoami voor het uitleggen van mijn gedachte :Y)
Jullie beiden bedankt, ik ga weer ff aan de slag :)

🇪🇺 pro Europa!


  • satcp
  • Registratie: Februari 2000
  • Niet online
Goede startplaatsen:

.NET - Localization using Resource file
Instantly Changing Language in the Form

De voorbeeldcode is hier wel in C# .NET, maar in VB .NET is de werkwijze vrij analoog.
Pagina: 1