Text wijzigen (meerdere talen)

Pagina: 1
Acties:

  • michaelw1998
  • Registratie: Oktober 2012
  • Laatst online: 00:12
Hi,

Het betreft: VB.NET

Ik wil mijn programma zo hebben dat het dus meerdere talen ondersteund. Hoe ik dat gedaan heb?
Ik heb via Application Events een Startup event gemaakt (Dus voor FormLoad is Startup), en daarin dus van alle Forms de text ingevuld (Form2.Label1.Text = "Blabla" etc).
Ik heb ook een registry check gedaan zodat je dus bij NL ook NL text moet krijgen.

Ik start het programma, de text is NL. Nu open ik een form; text NL. Als ik het geopende form dan weer sluit, en open.. Is het weer in het Engels.
Kortom; Zodra ik een form heropen is de text weer in het Engels.

Wat ik geprobeerd heb; In load ook registry check gedaan, en daar dus ook de text gezet zodra het NL is maar dat heeft niet geholpen....
Iemand die me kan helpen?

Groet,
Michael

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Er zijn vele betere manieren om dit te doen; begin hier maar eens ;)

Gewoon een multi-language resource file maken; is in een handomdraai gedaan (korte walkthrough hier) en je kunt lekker in je form-designer de gewenste taal selecteren, de labels en andere teksten aanpassen en desnoods wat knoppen breder/anders maken als 't in taal X niet "past".

Om even op je probleem in te gaan: je "initialiseert" (al?) je form(s) tijdens startup, dat form wordt bij sluiten ge-disposed en dus opgeruimd. Als je daarna een nieuwe instance opent is 't form weer in de staat zoals jij 't in de designer hebt gemaakt en dus dien je alle velden opnieuw te "initialiseren". Zoals je zult begrijpen is dit érg omslachtig en je zult snel snappen dat, als je voorgenoemde walkthrough hebt gevolgd, dat wat je nu geknutseld hebt niet dé manier is ;) Wat nog veel gevaarlijker is is dat je bij startup dus van elke form een instance maakt; dat gaat geheid een keer fout (en anders wel je startup gruwelijk traag maken) als je een keer wat zaken in 't form gaat doen in de constructor o.i.d. die tijdens startup nog helemaal niet mogelijk zijn.

[ Voor 55% gewijzigd door RobIII op 28-08-2014 20:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • michaelw1998
  • Registratie: Oktober 2012
  • Laatst online: 00:12
Oke, dat gaan we proberen! :)

Enneh, kan ik met 'localization' ook een stukje code vertalen? Heb namelijk in m'n code staan; If Label5.Text = "1" Then Label5.Text = "January" --- En dat moet in NL dus Januari zijn.

Bij bovenstaande zoek ik de maand door Label5.Text = DateTime.Now.Month

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
michaelw1998 schreef op donderdag 28 augustus 2014 @ 20:38:
Oke, dat gaan we proberen! :)

Enneh, kan ik met 'localization' ook een stukje code vertalen? Heb namelijk in m'n code staan; If Label5.Text = "1" Then Label5.Text = "January" --- En dat moet in NL dus Januari zijn.

Bij bovenstaande zoek ik de maand door Label5.Text = DateTime.Now.Month
Daar heb je resource files voor en sattelite assemblies. Staat allemaal in de pagina's die ik linkte ;) Of klik even door wat van deze pagina's heen (zoals deze bijvoorbeeld).

[ot]
Los daarvan zou ik geen if...then...else... gebruiken in dat specifieke voorbeeld; maak gewoon een array van maanden (in verschillende vertalingen dan) en zeg gewoon Label5.Text = MyMonths[3] (voor Maart/March/...). Ook het gebruik van "Label5" is niet heel erg netjes; doe gewoon "MonthLabel" of "lblMonth" of iets dergelijks.

[ Voor 33% gewijzigd door RobIII op 28-08-2014 20:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • michaelw1998
  • Registratie: Oktober 2012
  • Laatst online: 00:12
Bedankt! Ik heb ook de volgende YouTube video gebruikt; YouTube: Localization in visual studio .NET

[ Voor 160% gewijzigd door michaelw1998 op 28-08-2014 21:24 ]


  • michaelw1998
  • Registratie: Oktober 2012
  • Laatst online: 00:12
Oké, ik heb nu dus localization en globalization, maar ik wil wel een knopje met talen zodat de gebruiker zijn/haar standaard taal toch kan overschrijven.

Hoe ga ik dat dan doen, want het blijkbaar wel gebeuren vóór het FormLoad?

(Excuses voor dubbele post, maar anders zag je niet dat ik iets nieuws geplaatst had).

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 21-01 01:41

ZaZ

Tweakers abonnee

Je moet dan je CurrentThread.CurrentCulture en CurrentUICulture instellen met een nieuwe culture.
Dat moet je inderdaad doen voordat de InitializeComponent wordt aangeroepen, want dat is het moment dat je controls op je form gemikt worden

Lekker op de bank


  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05-2025
localization werkt met resrouce strings, dus als je in het object label.text = "hardcoded" erin zet gaat vertaling niet werken volgens mij.
Pagina: 1