[edit] vooraf wil ik je al waarschuwen niks te kopieren/plakken van de codeblokken en dan te verwachten dat het meteen werkt, er kunnen wat typfouten inzetten. [/edit]
Wat ik doe, lijkt mij meer op wat jij wilt.
als ik het goed begrijp wil jij dat het programma gezet kan worden op nederlands en engels (of nog 100 talen). en elke keer als de user het programma start moet die taal komen.
wat ik dan doe is een .txt laten maken in de directory, die dan laten lezen door het programma en daaraan de taal aanpassen.
ik zal het even uitgebreid uitleggen.
Allereerst:
voor een programma met 2 talen hoef je maar 1 extra taal in te stellen!
je schrijft het programma gewoon compleet met nederlandse woorden(zoals bestand, en annuleren). En als het dan in het engels moet DAN pas ga je het vertalen.
als het programma opstart heb ik deze code lopen, om te controleren of er een "Correct" taal bestand bestaat.
Code:
If File.Exists(Application.StartupPath & "\language.txt") Then
Dim languageReader As New StreamReader(Application.StartupPath & "\language.txt")
Dim sCurrentVersion As String = languageReader.ReadLine : CurrentVersionReader.Dispose()
LET OP: geen end if omdat het volgende codeblok hier verder gaat!
na deze code moet je controlleren of het taal bestand wel klopt (of er niet in geromeld is).
Dat doe je zo:
Code:
if scurrentversion = "English" then
English()
elseif scurrentversion = "Nederlands" then
Nederlands()
else
My.Computer.FileSystem.DeleteFile(Application.StartupPath & "\language.txt")
application.restart
met dat stukje code kijk je of er in het bestand "English" of "Nederlands" staat. staat dat er niet in (file is corrupt) dan delete hij de file.
hier dan het stukje wat het programma doet als er geen textbestand gevonden kan worden (bijv dat het programma het delete en herstart, dan vind hij er geen).
Code:
else
language_select.show()
me.close
end if
je opent dan een form dat Language select.vb heet om vervolgens een taal opnieuw te laten instellen.
het instellen van een taal is niet zo moeilijk.
je maakt 2 knoppen (1 voor nederlands 1 voor engels) en je gebruikt achter de knoppen deze code
Code:
Dim langfile As New StreamWriter("language.txt")
langfile.Write("Nederlands")
langfile.Close()
Waar je "Nederlands" verandert in "English" voor de engelse taal.
wat je programma nu kan is:
Controleren of er een language bestand is.
Controleren of dat bestand "Correct" is
Zo niet het bestand verwijderen en een nieuwe laten kiezen.
in de code heb ik staan:
if scurrentversion = "English" then
English()
elseif scurrentversion = "Nederlands" then
Nederlands()
else
nu maken we de sub voor nederlands:
Code:
Private sub Nederlands()
End sub
Dat klopt, een lege sub. je programma doet dus NIETS als er nederlands staat in je language file (je programma is geschreven in het nederlands dus dan start hij met alle nederlandse tekst).
en de sub English() ziet er dan als volgt uit
Code:
Private sub English()
form1.label1.text = "File"
form2.label1.text = "File"
End sub
En je voegt daar alles toe wat engels moet worden das als jou label zegt:
Kies een gebruiker.
voeg je toe
Code:
label.text = "Choose an user."
of
label.text = "Pick a user."
dit doe je voor het gehele programma.
Het .ini werkt eigenlijk hetzelfde alleen is deze methode simpeler.
Een .ini wordt handiger (en beter) als je meer instellingen wilt gaan onthouden. met een .ini heb je dan maar 1 bestand nodig terwijl je met deze methode meerdere bestanden nodig zou hebben (wat weer code met zich meebrengt)
succes ermee!
