/* Title: Language Helper note: You only need four functions, one label and a variable with the Translations to make your script compatible with plenty languages. Example: (start code) IniVar= ( [lang] actualLang=fr possibleLangs=de,en,fr [de] MenulanguageTitel=Sprachauswahl testvar =deutsch [en] MenulanguageTitel=Languages testvar =english [fr] MenulanguageTitel=Language testvar =francais ) ; --------------------------------------------------------------------- LangHelp_LoadLanguageVars(IniVar,"updateLang") ; --------------------------------------------------------------------- Gui,Add, text, vtestvar w300, testvar=%testvar% Gui,Add, text, ; --------------------------------------------------------------------- Menualt := LangHelp_showLangTrayMenu(possibleLangs, MenulanguageTitel) LangHelp_showLangMenu(possibleLangs, MenulanguageTitel) LangHelp_showLangRadioMenu(possibleLangs, actualLang) ; --------------------------------------------------------------------- Gui,Show, ,Language - Sprache Return ; --------------------------------------------------------------------- updateLang: GuiControl, ,testvar, testvar=%testvar% return ; --------------------------------------------------------------------- esc:: GuiEscape: GuiClose: ExitApp Return #include LangHelp.ahk (end) Function: LangHelp_LoadLanguageVars(IniVar,"updatelabel",MyMenuBarName="MyMenu") Load Languagevars possibleLangs,actualLang from an ini-like Variable Sets a Label where you can update your Controls Parameters: IniVar - Variable like an ini-file updatelabel - Label where you update your controls MyMenuBarName - If you want to set later a menubar Returns: nothing Remarks: IniVar must have the above format. You can easily load inifiles with readfile updatelabel is a Label where you update your controls Example: > LangHelp_LoadLanguageVars(IniVar,"updatelabel") > LangHelp_LoadLanguageVars(IniVar,"updatelabel","MyMenuBar") Function: LangHelp_showLangRadioMenu(possibleLangs,possibleLangs) Make a Bar from Radiobuttons Parameters: possibleLangs - Stringvar like de,en,fr, ... actualLang - one of the above: de or en or fr Remarks: nothing Example: > > LangHelp_showLangRadioMenu(possibleLangs,possibleLangs) > Function: LangHelp_showLangMenu(possibleLangs,possibleLangs) Make a Languagemenu Parameters: possibleLangs - Stringvar like de,en,fr, ... actualLang - one of the above: de or en or fr Remarks: nothing Example: > > LangHelp_showLangMenu(possibleLangs,possibleLangs) > Function: LangHelp_showLangTrayMenu(possibleLangs,possibleLangs) Make a Languagemenu Parameters: possibleLangs - Stringvar like de,en,fr, ... actualLang - one of the above: de or en or fr Remarks: nothing Example: > > LangHelp_showLangTrayMenu(possibleLangs,possibleLangs) > The other functions and Labels in LangHelp.ahk are helpercode. About: License - Version 0.0.0.1 by haichen */ LangHelp_LoadLanguageVars(IniVarr,updatelabel,MyMenuBarrName="MyMenu"){ global inivar :=inivarr MyMenuBarName :=MyMenuBarrName updateLang =%updatelabel% LangHelp_loadVarsFromIniVar(IniVar,"lang") LangHelp_loadVarsFromIniVar(IniVar,actualLang) } LangHelp_showLangRadioMenu(possibleLangs, actualLang){ global ChkLang1, ChkLang2, ChkLang3, ChkLang4, ChkLang5 global ChkLang6, ChkLang7, ChkLang8, ChkLang9, ChkLang10 StringSplit, LangString, possibleLangs, `,%A_Space%%A_Tab%`n`r Loop,%LangString0% { r1 := (LangString%a_index% = actualLang) ? 1 : 0 r2 := (a_index = 1) ? "+0" : "+20" Gui,Add, Radio, vChkLang%a_index% x%r2% yp+0 Checked%r1% gLangHelp_ChangeLanguageByRadio, % LangString%a_index% } Menualt:=MenulanguageTitel Return :=Menualt } LangHelp_ChangeLanguageByRadio: Gui, Submit, NoHide actualLang :=LangHelp_ChangeLanguageByRadio(possibleLangs) LangHelp_loadVarsFromIniVar(IniVar,actualLang) Gosub,%updateLang% ;updateLang Return LangHelp_ChangeLanguageByRadio(possibleLangs){ Gui, Submit, NoHide StringSplit, LangString, possibleLangs, `,%A_Space%%A_Tab%`n`r Loop,%LangString0% If (ChkLang%a_index%) actualLang := LangString%a_index% Return actualLang } LangHelp_showLangMenu(possibleLangs, MenulanguageTitel,adddmenu=""){ global addmenu:= adddmenu StringSplit, LangString, possibleLangs, `,%A_Space%%A_Tab%`n`r Loop,%LangString0% { l:= LangString%a_index% Menu, LangMenu, Add, &%l%, LangHelp_ChangeLanguageByMenu } if (addmenu ="") Menu, %MyMenuBarName%, Add, %MenulanguageTitel%, :LangMenu ; Attach the two sub-Menus that were created above. else menu, %addmenu%,Add, %MenulanguageTitel%, :LangMenu Menualt:=MenulanguageTitel } LangHelp_showLangTrayMenu(possibleLangs, MenulanguageTitel){ Gui, Submit, NoHide Menu, tray, NoStandard StringSplit, LangString, possibleLangs, `,%A_Space%%A_Tab%`n`r Loop,%LangString0% { l:= LangString%a_index% Menu, MySubMenu1, add,%l%,LangHelp_ChangeLanguageByMenu } Menu, tray, add, %MenulanguageTitel%, :MySubMenu1 Menualt:=MenulanguageTitel Return Menualt } LangHelp_ChangeLanguageByMenu: Gui, Submit, NoHide actualLang :=LangHelp_ChangeLanguageByMenu(possibleLangs) LangHelp_loadVarsFromIniVar(IniVar,actualLang) Gosub,%updateLang% Return LangHelp_ChangeLanguageByMenu(possibleLangs){ Gui, Submit, NoHide StringSplit, LangString, possibleLangs, `,%A_Space%%A_Tab%`n`r actualLang := LangString%A_ThisMenuItemPos% GuiControl, ,ChkLang%A_ThisMenuItemPos%, 1 Return, actualLang } LangHelp_loadVarsFromIniVar(iniVar,iniSectionsToLoad) { ; from not-logged-in-daonlyfreez ; http://www.autohotkey.com/forum/post-41881.html#41881 global local loadEm loadEm = 0 Counter := 0 Loop, Parse, iniVar, `n, `r { ; Scan for section, if the line is a section, get section name, ; compare to iniSectionsToLoad, set loadEm flag If A_LoopField Contains [ { If A_LoopField Contains ] { StringMid, anIniSection, A_LoopField, InStr(A_LoopField,"]")-1, StrLen(A_LoopField)-2, L ; Get Section name If anIniSection in %iniSectionsToLoad% ; is it in our matchlist? loadEm = 1 Else loadEm = 0 If iniSectionsToLoad = ; is it empty? -> get nothing ;all loadEm = 0 ;1 } } ; Set key and value of the line to a variable named like the key ; and with the value of the key If loadEm = 1 { If A_LoopField Contains = { Counter++ StringSplit, Fiel, A_LoopField, = ,%A_Space%%A_Tab%`n`r ;after the last comma its from Haichen (ekliger fehler):-) field =%field1%= StringSplit, Field, A_LoopField, = ,%A_Space%%A_Tab%`n`r ;after the last comma its from Haichen :-) %Field1% := Fiel2 } } } Return Counter } return LangHelp_NewStartINI(Inifile,INIVarr) { global inivar :=inivarr IfNotExist, %INIfile% { fileappend,%Inivar%,%INIfile% LangHelp_loadVarsFromIniVar(IniVar,"lang") LangHelp_loadVarsFromIniVar(IniVar,actualLang) Gui,55:Add, GroupBox, x10 h70 w120 , Language - Sprache StringSplit, LangString, possibleLangs, `,%A_Space%%A_Tab%`n`r Loop,%LangString0% { r1 := (LangString%a_index% = actualLang) ? 1 : 0 Gui,55:Add, Radio, vChkLang%a_index% x30 yp+20 Checked%r1% gtest , % LangString%a_index% } Menualt:=MenulanguageTitel Gui,55:Show, ,Language - Sprache WinGetPos , X, Y,GW ,GH , Language - Sprache GWinH := GH +20 GBH := GH -30 WinMove, Language - Sprache, , , ,GW, GWinH GuiControl, 55:Move, button1, h%GBH% } Else{ FileRead, IniVar, %iniFile% LangHelp_loadVarsFromIniVar(IniVar,"lang") LangHelp_loadVarsFromIniVar(IniVar,actualLang) } WinWaitClose ,Language - Sprache return } test: Gui,Submit, NoHide Loop,%LangString0% { if (ChkLang%a_index%) actualLang := LangString%a_index% } IniWrite, %actualLang%, %INIfile%, lang, actualLang FileRead, IniVar, %iniFile% LangHelp_loadVarsFromIniVar(IniVar,"lang") LangHelp_loadVarsFromIniVar(IniVar,actualLang) Gui, 55:Destroy return