[Gambas-user] Applying translation to a running application
Benoit Minisini
gambas at ...1...
Tue Sep 23 22:54:45 CEST 2008
On mardi 23 septembre 2008, Charlie Reinl wrote:
> Am Dienstag, den 23.09.2008, 12:43 -0500 schrieb M0E Lnx:
> > Can anyone think of a way to apply a translation to an application
> > that's already running?
> >
> > An example would be a wizard that starts out in English, and at the
> > first step offers the user to choose their language.
> > After the user selects his/her language, the rest of the application
> > get translated to the selected language.
> >
> > I'm not talking about creating the translations... I already know how
> > to do that... This is assuming there is a translated version for the
> > listed languages.
> >
> > Anybody?
>
> Salut,
>
> one way is, all text to show, is stored in a Databasetable, only the
> text which is used before the DB is connected,is burned in, and in
> english.
>
> Here a simple form of that Table:
> lang is GB,FR,DE or so
> token is an unique token-key
> text is the text in the language, fix by lang
>
> So in Form_Open or so you m ake :
>
> PUBLIC SUB Form_Open()
> DIM rTest AS Result
> rTest = meConn.Handle.Find("tblLang", "token = &1 and lang = &2",
> "Label1",myLang)
> Label1.Text = rTest!Text
> rTest = meConn.Handle.Find("tblLang", "token = &1 and lang = &2",
> "Label2",myLang)
> Label2.Text = rTest!Text
> ...... and so on .....
> END
>
> Do not forget all other texts use in messages, printouts and so on.
My god... You have a Windows background, don't you? :-)
Gambas has an integrated translation system based on the standard GNU tools.
No need to reinvent the wheel there.
Anyway, here is a little demo of how to change the application language at
runtime:
PUBLIC SUB Main()
DIM sLang AS String
DO
PRINT "Enter language code (fr, es, en...): ";
LINE INPUT sLang
System.Language = sLang
PRINT ("Hello")
LOOP
END
Of course, you must translate the "Hello" string in the IDE to see it
translated!
Beware that strings are not translated "on the fly". If a form is opened, you
must destroy it and recreate it to see the new translations. In other words,
strings are translated when they are used.
Regards,
--
Benoit Minisini
More information about the User
mailing list