Jos halutaan lokalisoida eli kääntää Visual Basic 2005 -ohjelmalla tehdyn ohjelman nappien yms kieli joksikin muuksi, vaikkapa ruåtsiksi, niin tähän lienee Microsoftilla olemassa systeemit.
Mutta kun lueskelin ohjeita, niin missään ei selvinnyt, että voidaanko kieltä vaihtaa lennosta, eli asetussivulla voisi valita kielen, ja samassa ohjelma olisikin jo ko kielen mukainen. Liekö tämä mahdollista?
Entä pitääkö aina kääntää (=build) projekti Visual Basicissa erikseen kullekin kielelle?
Monikielisen ohjelman tekeminen omin keinoin on sen verran helppoa, että minä en turvautuisi mihinkään valmiisiin järjestelmiin, joita ei kenties saa toimimaan aivan sillä tavalla kuin haluaisi. Yksinkertainen ohjelman tekstien lukeminen valitun kielen mukaisesta tiedostosta toimii täysin varmasti, ja kieltä voi ongelmitta vaihtaa ohjelman suorituksen aikana.
Olen samaa mieltä. Allaoleva ohjelmapläjäys etsii formilta kaikki testit ja kirjoittaa ne muuttujataulukkoon, josta ne voi sitten vaikkapa tallentaa. Aliohjelmaan annetaan parametrinä formin nimi.
Jostain syystä tuo ei osaa etsiä menujen tai toolstrippien alakohtia, eikä itse lomakkeen nimeä.
Vähintään yhtä juhlava pläjäys voidaan tehdä lukemaan tekstit tiedostosta ja laittamaan takaisin lomakkeelle.
Itselleni mieluisampi vaihtoehto on tehdä ohjelma, joka kirjoittaa minulle valmiiksi koodia, jonka vain copy-pastean Form_loadiin, ja voilá
Private Sub EtsiTekstit(ByVal parent As Control) Dim i As Integer Dim c As Control For Each c In parent.Controls If c.Text <> "" Then ' Ei tyhjiä If IsNumeric(Mid(c.Text, 1, 1)) = False Then ' Ei numeroita If InStr("...;TrueFalse", c.Text) = 0 Then ' Ei näitä merkkejä tai sanoja If Mid(c.Text, 1, 2) <> "C:" Then ' Ei hakemistoja If Mid(c.Name, 1, 2) <> "XX" Then ' Jos ei haluta kääntää esim ohjelman nimeä tai copyrightiä For i = 0 To Tekstienmäärä If Viesti(i) = Trim(c.Text) Then Exit For If Viesti(i) = "" Then Viesti(i) = Trim(c.Text) Exit For End If Next End If End If End If End If End If If c.HasChildren Then EtsiTekstit(c) ' Rekursiivinen kutsu End If Next End Sub
Ohjelman tekstien penkominen tuolla tavalla on ehkä vähän hankala ratkaisu. Minä luultavasti kirjoittaisin ihan käsin koodin, joka laittaa tiedostosta luetut tekstit oikeiden kontrollien oikeiden ominaisuuksien arvoiksi. Onhan siinä jonkin verran työtä, mutta harvemmin tekstejä kuitenkaan on ihan käsittämättömiä määriä.
Itse teen niin, että kirjoittelen lokalisoitaviksi tarkoitetut tekstit alkamaan ja loppumaan tietyllä merkillä ja sitten oma pikku softakikkare käy ne läpi ja korvaa komennolla, joka lataa ne tiedostosta (ja tietty poimii ne erikoismerkkien välissä olevat tekstit sinne tiedostoon)
Tosimiehen tuntee siitä, että hän väsää kaksi päivää ohjelmaa joka tekee homman automaattisesti. Tosin käsin tekemällä homman tekisi puolessa päivässä...
Joka tapauksessa tein muutaman ohjelmanpätkän, joka hakee kaikissa lomakkeissa olevat tekstit, laittaa ne tiedostoon, ja tekee minulle valmiiksi ohjelmakoodit suoraan formeihin liitettäviksi.
Asetuslomakkeen teko on yleensä kaikkein tympein homma koko ohjelmassa, siihenhän pitää kirjoittaa hirmuisesti koodia, jotta textboksien arvot saa päivitettyä oikeisiin muuttujiin ja päinvastoin.
Sain tämänkin automatisoitua. Ainoa vaatimus on se, että textboksin nimi on sama kuin muuttujalla, mutta siinä on etuliite txt. Siis muuttujaa Oletuskansio vastaa textboksi txtOletuskansio.
(Tämä toimii muuten, mutta jos on radiobuttoneita tai checkbokseja, niin viereen täytyy tehdä näkymätön textboksi, jossa siis lukee True tai false)
Tässäkin ohjelma tekee valmista koodia, jonka voi liittää suoraan alkuperäiseen ohjelmaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.