B4A Class Language selector

Discussion in 'Additional libraries, classes and official updates' started by Tayfur, Aug 13, 2015.

  1. Tayfur

    Tayfur Well-Known Member Licensed User

    Hello all;

    I'm not a professional, I am beginner. This is first Class.
    This for multi lanugage App. I hope you enjoy.

    note: all flags are in attachment.

    use on main

    Code:
    '******************MAIN ACTIVITY***********************
    ' you can min 1 or 8 language type,
    'lang_select.Initialize("pt","dil",Activity,Me,True)
    'lang_select.Initialize("en-it-pt-es-de","dil",Activity,Me,True)
    lang_select.Initialize("en-tr-fr-ru-it-pt-es-de","dil",Activity,Me,True)
    ' it is return call sub "Language_Loaded"

    Sub Language_Loaded(langbook As Map,language As String)
        
    Log("language loaded:"&langbook.Get("key"))
        
    Log("language::"&language)
    End Sub



    Code:
    'Class module

    Sub Class_Globals
        
    Private pnl As Panel
        
    Dim language As String
        
    Type pozitions (obj_top As Int,obj_left As Int,obj_with As Int,obj_heigth As Int)
    End Sub
    'http://www.b4x.com/android/forum/threads/localize-your-app-using-androidresources.19165/
    'Lib >> reflection
    'Initializes the object. You can add parameters to this method if needed.
    'Ülke bayrakları buradan yuklenir / Flag resuerce web site
    'https://tr.wikipedia.org/wiki/%C3%9Clke_bayraklar%C4%B1_listesi
    'https://en.wikipedia.org/wiki/ISO_639-1
    '************************************
    'English     >> en      >>    flag_en.png
    'German     >> de      >>    flag_de.png
    'French     >> fr     >>    flag_fr.png
    'Italian     >> it    >>    flag_it.png
    'Portuguese >> pt    >>    flag_pt.png
    'Spanish     >> es    >>    flag_es.png
    'Turkish     >> tr    >>    flag_tr.png
    'Russian     >> ru    >>    flag_ru.png
    '************************************
    ' you must load flag pictures in app files
    ' ***.intalize("fr-tr-ru") '<for only options for language French, turkish, russian>
    'Initialize("fr-tr-ru","Dil",Activity,Me,True) 'Initialize the Class.
    '--------------for main activities results -------------------------------------
    'Sub Language_Loaded(langbook As Map,language As String)
    'Log("language loaded")
    'End Sub
    Public Sub Initialize(lang As String,EventName As String,Parent As Panel,Module As Object,ActivityTouch As Boolean) 'As String 
        'Dim language As String
        'Log ("DİL="&language)
        File.Delete(File.DirInternal,"lang.dat")
     
     
        
    If File.Exists(File.DirInternal,"lang.dat"Then
            language=
    File.ReadString(File.DirInternal,"lang.dat")
            
    Log("selected lang:"&language)
            
    Dim langbook As Map
            langbook.Initialize
            langbook.Put(
    "key","sample")
            langbook.Put(
    "key2","valuse"' this is example, you add this words...
            '...
            '....
            '.....
            '......
            CallSubDelayed3(Main,"Language_Loaded",langbook,language)
        
    Else
            
    ' OPEN LANGUAGE SLECTION MENU
            Dim r As Reflector
            r.Target = r.RunStaticMethod(
    "java.util.Locale""getDefault"NullNull)
            language = r.RunMethod(
    "getLanguage")
            
    Log("new selection lang:"&language) 
            pnl.Initialize(
    "pnl")
            Parent.AddView(pnl,
    0,0,100%x,100%y)
            pnl.Color=
    Colors.Green
            
    Dim i As Int=0
            
    Dim picture(8As ImageView     
            
    Dim lbl(8As Label
            
    Dim pos(8As pozitions
            
    Dim lbl_height=20dip
            
    '---------------------------------------------
            If 100%x<100%y Then
            
    For i=0 To 7
                pos(i).Initialize
                pos(i).obj_with=
    30%x
                pos(i).obj_heigth=
    30%x*(145/220)'flag diemsions rate
                If Ceil(i/2)*2=i Then
                    pos(i).obj_left=
    12%x
                    
    Else
                    pos(i).obj_left=
    58%x
                    
    End If
             
                
    Dim ss As Double=(100%y-(pos(i).obj_heigth)*4 - 4*lbl_height)/5
                
    Select i
                
    Case 0,1
                    pos(i).obj_top=ss
                
    Case 2,3
                    pos(i).obj_top=
    1*(ss+pos(0).obj_heigth+lbl_height)+ss
                
    Case 4,5
                    pos(i).obj_top=
    2*(ss+pos(0).obj_heigth+lbl_height)+ss
                
    Case 6,7
                    pos(i).obj_top=
    3*(ss+pos(0).obj_heigth+lbl_height)+ss
                
    End Select
            
    Next
         
            
    Else '------------------------------------------------------------------
                For i=0 To 7
                pos(i).Initialize
                pos(i).obj_with=
    20%x
                pos(i).obj_heigth=
    20%x*(145/220)'flag diemsions rate
             
                
    Select i
                    
    Case 0,4
                        pos(i).obj_left=
    20%x/5
                    
    Case 1,5
                        pos(i).obj_left=(
    20%x/5+20%x)*1 +20%x/5
                    
    Case 2,6
                        pos(i).obj_left=(
    20%x/5+20%x)*2+20%x/5
                    
    Case 3,7
                        pos(i).obj_left=(
    20%x/5+20%x)*3+20%x/5
                
    End Select
             
             
             
                
    Dim ss As Double=(100%y-(pos(i).obj_heigth)*2 - 2*lbl_height)/3
                
    Select i
                
    Case 0,1,2,3
                    pos(i).obj_top=ss
                
    Case 4,5,6,7
                    pos(i).obj_top=ss+pos(
    0).obj_heigth+lbl_height+ss
                
    End Select
            
    Next     
         
         
            
    End If
         
            
    '--------------------------------------------------------------
         
            i=
    0
            
    If lang.IndexOf("tr")>=0 Then
                picture(i).Initialize(
    "picture")'("picture_"&i)
                picture(i).tag="tr"
                picture(i).Bitmap=
    LoadBitmapSample(File.DirAssets,"flag_tr.png",220dip,145dip)
                picture(i).Gravity=
    Gravity.FILL
                lbl(i).Initialize(
    "lbl_"&i)
                lbl(i).tag=
    "tr"
                lbl(i).Color=
    Colors.Blue
                lbl(i).Text=
    "Türkçe"
                lbl(i).Gravity = 
    Gravity.CENTER
                pnl.AddView(picture(i),pos(i).obj_left,pos(i).obj_top,pos(i).obj_with,pos(i).obj_heigth)
                pnl.AddView(lbl(i),pos(i).obj_left,pos(i).obj_top+pos(i).obj_heigth,pos(i).obj_with,lbl_height)
                i=i+
    1
            
    End If 
            
    If lang.IndexOf("en")>=0 Then
                picture(i).Initialize(
    "picture")
                picture(i).tag=
    "en"
                picture(i).Bitmap=
    LoadBitmapSample(File.DirAssets,"flag_en.png",220dip,145dip)
                picture(i).Gravity=
    Gravity.FILL
                lbl(i).Initialize(
    "lbl_"&i)
                lbl(i).tag=
    "en"
                lbl(i).Color=
    Colors.Blue
                lbl(i).Text=
    "English"
                lbl(i).Gravity = 
    Gravity.CENTER
                pnl.AddView(picture(i),pos(i).obj_left,pos(i).obj_top,pos(i).obj_with,pos(i).obj_heigth)
                pnl.AddView(lbl(i),pos(i).obj_left,pos(i).obj_top+pos(i).obj_heigth,pos(i).obj_with,lbl_height)
                i=i+
    1
            
    End If 
         
            
    If lang.IndexOf("de")>=0 Then
                picture(i).Initialize(
    "picture")
                picture(i).tag=
    "de"
                picture(i).Bitmap=
    LoadBitmapSample(File.DirAssets,"flag_de.png",220dip,145dip)
                picture(i).Gravity=
    Gravity.FILL
                lbl(i).Initialize(
    "lbl_"&i)
                lbl(i).tag=
    "de"
                lbl(i).Color=
    Colors.Blue
                lbl(i).Text=
    "Deutsch"
                lbl(i).Gravity = 
    Gravity.CENTER
                pnl.AddView(picture(i),pos(i).obj_left,pos(i).obj_top,pos(i).obj_with,pos(i).obj_heigth)
                pnl.AddView(lbl(i),pos(i).obj_left,pos(i).obj_top+pos(i).obj_heigth,pos(i).obj_with,lbl_height)
                i=i+
    1
            
    End If 
            
    If lang.IndexOf("fr")>=0 Then
                picture(i).Initialize(
    "picture")
                picture(i).tag=
    "fr"
                picture(i).Bitmap=
    LoadBitmapSample(File.DirAssets,"flag_fr.png",220dip,145dip)
                picture(i).Gravity=
    Gravity.FILL
                lbl(i).Initialize(
    "lbl_"&i)
                lbl(i).tag=
    "fr"
                lbl(i).Color=
    Colors.Blue
                lbl(i).Text=
    "Français"
                lbl(i).Gravity = 
    Gravity.CENTER
                pnl.AddView(picture(i),pos(i).obj_left,pos(i).obj_top,pos(i).obj_with,pos(i).obj_heigth)
                pnl.AddView(lbl(i),pos(i).obj_left,pos(i).obj_top+pos(i).obj_heigth,pos(i).obj_with,lbl_height)
                i=i+
    1
            
    End If 
            
    If lang.IndexOf("it")>=0 Then
                picture(i).Initialize(
    "picture")
                picture(i).tag=
    "it"
                picture(i).Bitmap=
    LoadBitmapSample(File.DirAssets,"flag_it.png",220dip,145dip)
                picture(i).Gravity=
    Gravity.FILL
                lbl(i).Initialize(
    "lbl_"&i)
                lbl(i).tag=
    "it"
                lbl(i).Color=
    Colors.Blue
                lbl(i).Text=
    "Italiano"
                lbl(i).Gravity = 
    Gravity.CENTER
                pnl.AddView(picture(i),pos(i).obj_left,pos(i).obj_top,pos(i).obj_with,pos(i).obj_heigth)
                pnl.AddView(lbl(i),pos(i).obj_left,pos(i).obj_top+pos(i).obj_heigth,pos(i).obj_with,lbl_height)
                i=i+
    1
            
    End If     
            
    If lang.IndexOf("es")>=0 Then
                picture(i).Initialize(
    "picture")
                picture(i).tag=
    "es"
                picture(i).Bitmap=
    LoadBitmapSample(File.DirAssets,"flag_es.png",220dip,145dip)
                picture(i).Gravity=
    Gravity.FILL
                lbl(i).Initialize(
    "lbl_"&i)
                lbl(i).tag=
    "es"
                lbl(i).Color=
    Colors.Blue
                lbl(i).Text=
    "Español"
                lbl(i).Gravity = 
    Gravity.CENTER
                pnl.AddView(picture(i),pos(i).obj_left,pos(i).obj_top,pos(i).obj_with,pos(i).obj_heigth)
                pnl.AddView(lbl(i),pos(i).obj_left,pos(i).obj_top+pos(i).obj_heigth,pos(i).obj_with,lbl_height)
                i=i+
    1
            
    End If
                
    If lang.IndexOf("pt")>=0 Then
                picture(i).Initialize(
    "picture")
                picture(i).tag=
    "pt"
                picture(i).Bitmap=
    LoadBitmapSample(File.DirAssets,"flag_pt.png",220dip,145dip)
                picture(i).Gravity=
    Gravity.FILL
                lbl(i).Initialize(
    "lbl_"&i)
                lbl(i).tag=
    "pt"
                lbl(i).Color=
    Colors.Blue
                lbl(i).Text=
    "Português"
                lbl(i).Gravity = 
    Gravity.CENTER
                pnl.AddView(picture(i),pos(i).obj_left,pos(i).obj_top,pos(i).obj_with,pos(i).obj_heigth)
                pnl.AddView(lbl(i),pos(i).obj_left,pos(i).obj_top+pos(i).obj_heigth,pos(i).obj_with,lbl_height)
                i=i+
    1
            
    End If 
            
    End If
                
    If lang.IndexOf("ru")>=0 Then
                picture(i).Initialize(
    "picture")
                picture(i).tag=
    "ru"
                picture(i).Bitmap=
    LoadBitmapSample(File.DirAssets,"flag_ru.png",220dip,145dip)
                picture(i).Gravity=
    Gravity.FILL
                lbl(i).Initialize(
    "lbl_"&i)
                lbl(i).tag=
    "ru"
                lbl(i).Color=
    Colors.Blue
                lbl(i).Text=
    "русский"
                lbl(i).Gravity = 
    Gravity.CENTER
                pnl.AddView(picture(i),pos(i).obj_left,pos(i).obj_top,pos(i).obj_with,pos(i).obj_heigth)
                pnl.AddView(lbl(i),pos(i).obj_left,pos(i).obj_top+pos(i).obj_heigth,pos(i).obj_with,lbl_height)
                i=i+
    1
            
    End If 
     
        
    'Return language
    End Sub
    Sub picture_Click
        
    Dim Pic_Sender As ImageView
        Pic_Sender = 
    Sender
         language=Pic_Sender.Tag
        
    Dim subj,aprv,cancl,titl As String
     
         
    Select Pic_Sender.Tag
             
    Case "tr"
                subj=
    "Uygulamızın dili Türkçe"
                aprv=
    "Kabul et"
                cancl=
    "İptal et"
                titl=
    "Emin misiniz?"
            
    Case "en"
                subj=
    "Application language is English"
                aprv=
    "Accept"
                cancl=
    "Cancel"
                titl=
    "Aru you sure?"
            
    Case "fr"
                subj=(
    "Langue de l'application est le Français")
                aprv=
    "Accepter"
                cancl=
    "Annuler"
                titl=
    "Es-tu sûr?"
            
    Case "ru"
                subj=(
    "Язык приложения является русский")
                aprv=
    "принимать"
                cancl=
    "отменить"
                titl=
    "Вы уверены?"
            
    Case "es"
                subj=(
    "Idioma de la aplicación es el Español")
                aprv=
    "Aceptar"
                cancl=
    "Cancelar"
                titl=
    "Estas seguro?"
            
    Case "pt"
                subj=(
    "Linguagem de aplicação é o Português")
                aprv=
    "Aceitar"
                cancl=
    "Cancelar"
                titl=
    "Você tem certeza?"
            
    Case "it"
                subj=(
    "Lingua L'applicazione è italiano")
                aprv=
    "Accettare"
                cancl=
    "Cancellare"
                titl=
    "Sei sicuro?"
            
    Case "de"
                subj=(
    "Anwendungssprache ist Deutsch")
                aprv=
    "Akzeptieren"
                cancl=
    "Stornieren"
                titl=
    "Sind Sie sicher?"
        
    End Select
     
        
    Dim reslt As Int
        
    Dim pict As Bitmap
        
    If File.Exists(File.DirAssets,"flag_"&language&".png"Then
                
    Log("resim var")
                pict=
    LoadBitmapSample(File.DirAssets,"flag_"&language&".png",(20dip)/(145/220),20dip)
            
    Else
                
    If File.Exists(File.DirAssets,"logo.png"Then
                    pict=
    LoadBitmapSample(File.DirAssets,"logo.png",20dip,20dip)
                    
    Else
                    pict.InitializeMutable(
    20dip,20dip)
                    
    End If
            
    End If
     
        
    If DialogResponse.POSITIVE=Msgbox2(subj,titl,aprv,"",cancl,pict) Then
            
    Log("kayıt edildi" & language)
            
    File.WriteString(File.DirInternal,"lang.dat",language)
            
    DoEvents
            pnl.RemoveView
            
    Dim langbook As Map
            langbook.Initialize
            langbook.Put(
    "key","valuse"' this is example, you add this words...
            '...
            '....
            '.....
            '......
            CallSubDelayed3(Main,"Language_Loaded",langbook,language)
        
    End If
     
    End Sub
    Screenshot_2015-08-13-17-56-25.png Screenshot_2015-08-13-17-56-33.png Screenshot_2015-08-13-17-56-40.png Screenshot_2015-08-13-17-56-53.png
     

    Attached Files:

    Last edited: Aug 13, 2015
    ta1dr and asales like this.
  2. asales

    asales Well-Known Member Licensed User

    can you post an complete example?
     
  3. Tayfur

    Tayfur Well-Known Member Licensed User

    I added it.
     
    asales likes this.
  4. asales

    asales Well-Known Member Licensed User

    Very nice. Thanks!
     
    Tayfur likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice