I’m looking for people who can translate about 150 terms and some short sentences for my new app QuiQRun! If you can help me, send me a mail to alain.bailleul@pandora.be.
I already have English, Dutch, Italian, French, German, Spanish and Portuguese.
What can I offer?
1. The full version of QuiQRun!
2. A skin in QuiQRun! with your favorite colors
3. Full credit in the apps credits screen
4. Eternal gratitude!
How do I use it in B4A?
The translations are stored in a language file, eg. en-us.lng.
They are stored in a predefined format:
{0000};Scanned
{0001};Scan
{0002};Create
{0003};Setting new skin, one moment...
{0004};Tap to get more info!
{0005};This QRCode is expired!
...
In Basic4Android, It checks if it has a translation, if not it uses the default you put in the GetString function. Here is the snippet I use:
Sub Process_Globals
Public LangStrings As Map
Public BOM As Int = 65279 ' Byte Order Mark for Windows UTF-8 files
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim R As Reflector
R.Target = R.RunStaticMethod("java.util.Locale", "getDefault", Null, Null)
Dim tmpLang As String = R.RunMethod("getLanguage")
Select Case tmpLang
Case "nl"
LoadLanguageFile("nl-be.LNG")
Case "fr"
LoadLanguageFile("fr-fr.LNG")
Case "it"
LoadLanguageFile("it-it.LNG")
Case "es"
LoadLanguageFile("es-es.LNG")
Case "de"
LoadLanguageFile("de-de.LNG")
Case Else
LoadLanguageFile("en-us.LNG")
End Select
' using it:
ToastMessageShow(GetString("{0003}","Setting new skin, one moment..."), true)
End Sub
Public Sub LoadLanguageFile(setLanguageFile as String)
LangStrings.Initialize
If File.Exists(File.DirAssets, setLanguageFile) Then
Dim txtR As TextReader
txtR.Initialize(File.OpenInput(File.DirAssets, setLanguageFile))
Dim line As String
line = txtR.ReadLine
Do While line Null
line = line.Replace(Chr(BOM), "")
LangStrings.Put(line.SubString2(0,6), line.SubString(7))
line = txtR.ReadLine
Loop
txtR.Close
End If
End Sub
Public Sub GetString(iCode As String, iDefault As String) As String
If LangStrings.ContainsKey(iCode) Then
Return LangStrings.Get(iCode)
Else
Return iDefault
End If
End Sub
Thanks!
Alwaysbusy
