There are no reasons why I posted this quest.
Maybe I saw more quest abortion that used lotofIF or, in recent cases, game.set_event_flag("language"..pc.get_name()) or mysql_query!
Things from another world.
How to compile
Create the file languagesystem.quest with this content:
Code:
quest languagesystem begin
state start begin
function GetMyLan()
--check language
local mylan=pc.getf("game_option", "language")
if(mylan==0)then
mylan=1--already local, not global!
end
return mylan
end
function GetMyString(lanid, strid)
--lan-table (list-mode)
local mystrings={
{"Language panel", "No language selected","Which language do you prefer?","Back","Language successfully changed.","","","","","","",""},
{"Pannello lingua", "Nessuna lingua selezionata","Quale lingua preferisci?","Indietro","Lingua correttamente cambiata.","","","","","","",""},
{"deutschestring1","deutschestring2","","","","","","","","","",""},
{"francaisstring1","francaisstring2","","","","","","","","","",""},
{"espanolstring1","espanolstring2","","","","","","","","","",""},
{"chinesestring1","chinesestring2","","","","","","","","","",""},
{"japanesestring1","japanesestring2","","","","","","","","","",""},
}
return mystrings[lanid][strid]
end
when letter begin
send_letter(languagesystem.GetMyString(languagesystem.GetMyLan(), 1))
end
when info or button begin
local mylan=languagesystem.GetMyLan()
local resend_letter=function(title) makequestbutton(title) q.set_title(title) q.start() end
--select language
say_title(languagesystem.GetMyString(mylan, 1))
say(languagesystem.GetMyString(mylan, 3))
local myarsel={"English", "Italiano", "Deutsche", "Francais", "AfroChinese"}
table.insert(myarsel,languagesystem.GetMyString(mylan, 4))
local mysel=select_table(myarsel)
--process language
if(mysel~=table.getn(myarsel))then --no back
mylan=mysel--already local, not global!
pc.setf("game_option", "language", mysel)
end
say_reward(languagesystem.GetMyString(mylan, 5))
--letter remake
resend_letter(languagesystem.GetMyString(mylan, 1))
end
end
end
Code:
cd /path/to/quest echo resend_letter >> quest_functions echo languagesystem.GetMyLan >> quest_functions echo languagesystem.GetMyString >> quest_functions
Code:
./qc languagesystem.quest
It's simple. U can use it using questlib.lua/locale.lua
Otherwise, here's an example:
Code:
quest examplelan begin
state start begin
when login begin
local mylan=languagesystem.GetMyLan()
--lan-table (dict-mode)
local myarr={
{["mex1"]="Welcome!",["mex2"]="blablabla1"},
{["mex1"]="Benvenuto!",["mex2"]="blablabla2"},
{["mex1"]="Willkommen!",["mex2"]="blablabla3"},
{["mex1"]="Bienvenue!",["mex2"]="blablabla4"},
{["mex1"]="Huan Ying!",["mex2"]="blablabla5"},
{["mex1"]="Youkoso!",["mex2"]="blablabla5"},
}
syschat(myarr[mylan].mex1)
--mex2 here is unused, u can delete it from the table
end
end
end







