From 7393b3c716846ec102c2320a1e53e537e685e751 Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Mon, 20 Sep 2021 20:25:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E8=AF=AD=E8=A8=80:=E6=9C=BA=E7=BF=BB?= =?UTF-8?q?=20=E8=AF=AD=E8=A8=80=E6=A8=A1=E5=9D=97=E5=8D=87=E7=BA=A7=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=9B=B4=E8=87=AA=E7=94=B1=E5=9C=B0=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=AF=AD=E8=A8=80=EF=BC=88=E4=B8=8D=E5=86=8D=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E8=AF=AD=E8=A8=80=E5=BA=8F=E5=8F=B7=EF=BC=89=20?= =?UTF-8?q?=E7=BB=99getTip=E8=AE=BE=E7=BD=AEmetatable=E7=9A=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=A7=BB=E5=87=BA=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Zframework/languages.lua | 53 +- main.lua | 73 +-- parts/gametoolfunc.lua | 13 +- parts/globalTables.lua | 2 +- parts/language/lang_es.lua | 2 +- parts/language/lang_fr.lua | 2 +- parts/language/lang_pt.lua | 2 +- parts/language/lang_symbol.lua | 2 +- parts/language/lang_zh.lua | 2 +- parts/language/lang_zh3.lua | 960 +++++++++++++++++++++++++++++++++ parts/net.lua | 2 +- parts/scenes/dict.lua | 2 +- parts/scenes/lang.lua | 43 +- parts/scenes/manual.lua | 2 +- 14 files changed, 1053 insertions(+), 107 deletions(-) create mode 100644 parts/language/lang_zh3.lua diff --git a/Zframework/languages.lua b/Zframework/languages.lua index 42f171c4..60208b22 100644 --- a/Zframework/languages.lua +++ b/Zframework/languages.lua @@ -1,5 +1,7 @@ local LANG={} -function LANG.init(langList,publicText)--Attention, calling this will destory all initializing methods, create a LANG.set()! +--ONLY FIRST CALL MAKE SENSE +--Create LANG.get() and LANG.addScene() +function LANG.init(defaultLang,langList,publicText,pretreatFunc) local function _langFallback(T0,T) for k,v in next,T0 do if type(v)=='table'and not v.refuseCopy then--refuseCopy: just copy pointer, not contents @@ -12,47 +14,36 @@ function LANG.init(langList,publicText)--Attention, calling this will destory al end end end - local tipMeta={__call=function(L)return L[math.random(#L)]end} - for i=1,#langList do - local L=langList[i] + --Set public text + for _,L in next,langList do + for key,list in next,publicText do L[key]=list end + end - --Set public text - for key,list in next,publicText do - L[key]=list - end - - --Fallback to other language, default zh - if i>1 then - _langFallback(langList[L.fallback or 1],L) - end - - --Metatable:__call for table:getTip - if type(rawget(L,'getTip'))=='table'then - setmetatable(L.getTip,tipMeta) + --Fallback to default language + for name,L in next,langList do + if name~=defaultLang then + _langFallback(langList[L.fallback or defaultLang],L) end end - LANG.init,LANG.setLangList,LANG.setPublicText=nil + --Custom pretreatment for each language + for _,L in next,langList do + pretreatFunc(L) + end - function LANG.set(l) - if text~=langList[l]then - text=langList[l] - WIDGET.setLang(text.WidgetText) - for k,v in next,drawableText do - if text[k]then - v:set(text[k]) - end - end - end + function LANG.get(l) + return langList[l] end function LANG.addScene(name) - for i=1,#langList do - if langList[i].WidgetText and not langList[i].WidgetText[name]then - langList[i].WidgetText[name]={back=langList[i].back} + for _,L in next,langList do + if L.WidgetText and not L.WidgetText[name]then + L.WidgetText[name]={back=L.back} end end end + + function LANG.init()end end return LANG diff --git a/main.lua b/main.lua index 972d3cc5..38438e60 100644 --- a/main.lua +++ b/main.lua @@ -251,16 +251,17 @@ VOC.init{ } --Initialize language lib -LANG.init( +LANG.init('zh', { - require'parts.language.lang_zh', - require'parts.language.lang_zh2', - require'parts.language.lang_yygq', - require'parts.language.lang_en', - require'parts.language.lang_fr', - require'parts.language.lang_es', - require'parts.language.lang_pt', - require'parts.language.lang_symbol', + zh=require'parts.language.lang_zh', + zh2=require'parts.language.lang_zh2', + en=require'parts.language.lang_en', + fr=require'parts.language.lang_fr', + es=require'parts.language.lang_es', + pt=require'parts.language.lang_pt', + grass=require'parts.language.lang_zh3', + yygq=require'parts.language.lang_yygq', + symbol=require'parts.language.lang_symbol', --1. Add language file to LANG folder; --2. Require it; --3. Add a button in parts/scenes/setting_lang.lua; @@ -273,7 +274,13 @@ LANG.init( "J5","L5","R","Y","N","H","I5", "I3","C","I2","O1" }, - } + }, + (function() + local tipMeta={__call=function(L)return L[math.random(#L)]end} + return function(L) + if type(rawget(L,'getTip'))=='table'then setmetatable(L.getTip,tipMeta)end + end + end)() ) --Load background files from SOURCE ONLY for _,v in next,fs.getDirectoryItems('parts/backgrounds')do @@ -366,43 +373,19 @@ do end SETTING.appLock=nil SETTING.dataSaving=nil - if not SETTING.VKSkin then - SETTING.VKSkin=1 - end + if not SETTING.VKSkin then SETTING.VKSkin=1 end for _,v in next,SETTING.skin do if v<1 or v>17 then v=17 end end - if - SETTING.RS=='ZRS'or SETTING.RS=='BRS'or - SETTING.RS=='ASCplus'or SETTING.RS=='C2sym' - then SETTING.RS='TRS'end - if SETTING.ghostType=='greyCell'then - SETTING.ghostType='grayCell' - end - if type(SETTING.skinSet)=='number'then - SETTING.skinSet='crystal_scf' - end - if not TABLE.find({8,10,13,17,22,29,37,47,62,80,100},SETTING.frameMul)then - SETTING.frameMul=100 - end - if SETTING.cv then - SETTING.vocPack,SETTING.cv=SETTING.cv - end - + if SETTING.RS=='ZRS'or SETTING.RS=='BRS'or SETTING.RS=='ASCplus'or SETTING.RS=='C2sym'then SETTING.RS='TRS'end + if SETTING.ghostType=='greyCell'then SETTING.ghostType='grayCell'end + if type(SETTING.skinSet)=='number'then SETTING.skinSet='crystal_scf'end + if not TABLE.find({8,10,13,17,22,29,37,47,62,80,100},SETTING.frameMul)then SETTING.frameMul=100 end + if SETTING.cv then SETTING.vocPack,SETTING.cv=SETTING.cv end + if RANKS.infinite then RANKS.infinite=0 end + if RANKS.infinite_dig then RANKS.infinite_dig=0 end + if not RANKS.sprint_10l then RANKS.sprint_10l=0 end + if RANKS.master_l then RANKS.master_n,RANKS.master_l=RANKS.master_l needSave=true end + if RANKS.master_u then RANKS.master_h,RANKS.master_u=RANKS.master_u needSave=true end for _,v in next,VK_org do v.color=nil end - if RANKS.infinite then - RANKS.infinite=0 - end - if RANKS.infinite_dig then - RANKS.infinite_dig=0 - end - if not RANKS.sprint_10l then - RANKS.sprint_10l=0 - end - if RANKS.master_l then - RANKS.master_n,RANKS.master_l=RANKS.master_l needSave=true - end - if RANKS.master_u then - RANKS.master_h,RANKS.master_u=RANKS.master_u needSave=true - end for k in next,RANKS do if type(k)=='number'then RANKS[k]=nil diff --git a/parts/gametoolfunc.lua b/parts/gametoolfunc.lua index b6a70e89..0ca70cd6 100644 --- a/parts/gametoolfunc.lua +++ b/parts/gametoolfunc.lua @@ -22,14 +22,23 @@ end function saveSettings() return FILE.save(SETTING,'conf/settings') end +function applyLanguage() + text=LANG.get(SETTING.locale) + WIDGET.setLang(text.WidgetText) + for k,v in next,drawableText do + if text[k]then + v:set(text[k]) + end + end +end function applySettings() love.window.setFullscreen(SETTING.fullscreen) love.audio.setVolume(SETTING.mainVol) love.mouse.setVisible(SETTING.sysCursor) - LANG.set(SETTING.lang) VK.setShape(SETTING.VKSkin) applyBlockSatur(SETTING.blockSatur) applyFieldSatur(SETTING.fieldSatur) + applyLanguage() end function switchCursor() SETTING.sysCursor=not SETTING.sysCursor @@ -209,7 +218,7 @@ function freshDate(mode) end function legalGameTime()--Check if today's playtime is legal if - (SETTING.lang==1 or SETTING.lang==2 or SETTING.lang==7)and + SETTING.locale:find'zh'and RANKS.sprint_10l<4 and (not RANKS.sprint_40l or RANKS.sprint_40l<3) then diff --git a/parts/globalTables.lua b/parts/globalTables.lua index 98588a80..88a5316c 100644 --- a/parts/globalTables.lua +++ b/parts/globalTables.lua @@ -262,7 +262,7 @@ SETTING={--Settings autoSave=false, simpMode=false, sysCursor=true, - lang=1, + locale='zh', skinSet='crystal_scf', skin={ 1,7,11,3,14,4,9, diff --git a/parts/language/lang_es.lua b/parts/language/lang_es.lua index cc619d33..5de62a26 100644 --- a/parts/language/lang_es.lua +++ b/parts/language/lang_es.lua @@ -1,5 +1,5 @@ return{ - fallback=4, + fallback='en', sureQuit="Pulsa de nuevo para salir", newDay="[Anti-adicción] ¡Nuevo día, nuevo comienzo!", playedLong="[Anti-adicción] Estuviste jugando un buen rato hoy. Recuerda descansar de vez en cuando.", diff --git a/parts/language/lang_fr.lua b/parts/language/lang_fr.lua index 1f1ea129..85a92091 100644 --- a/parts/language/lang_fr.lua +++ b/parts/language/lang_fr.lua @@ -1,5 +1,5 @@ return{ - fallback=4, + fallback='en', sureQuit="Appuyez à nouveau pour sortir", newDay="[Anti-addiction] Nouveau jour, nouveau commencement !", playedLong="[Anti-addiction] Vous avez joué pendant un bon bout de temps aujourd'hui. Faites des pauses.", diff --git a/parts/language/lang_pt.lua b/parts/language/lang_pt.lua index a96b1bd1..e9cf7629 100644 --- a/parts/language/lang_pt.lua +++ b/parts/language/lang_pt.lua @@ -1,6 +1,6 @@ local C=COLOR return{ - fallback=4, + fallback='en', sureQuit="Aparte novamente para sair", newDay="[Anti-vício] Novo dia, um começo novo!", playedLong="[Anti-vício] Você andou jogando bastante hoje. Certifique-se de fazer pausas.", diff --git a/parts/language/lang_symbol.lua b/parts/language/lang_symbol.lua index 34e10ed6..eb4d220e 100644 --- a/parts/language/lang_symbol.lua +++ b/parts/language/lang_symbol.lua @@ -1,5 +1,5 @@ return{ - fallback=4, + fallback='en', atkModeName={"?","( )","!","←→"}, royale_remain="$1 ~", diff --git a/parts/language/lang_zh.lua b/parts/language/lang_zh.lua index 78e46036..5fec6987 100644 --- a/parts/language/lang_zh.lua +++ b/parts/language/lang_zh.lua @@ -1078,7 +1078,7 @@ return{ "作者40行sub26了", "作者电脑上装了11个方块", "作者浏览器收藏夹里有6个方块", - "做,做碌鸠啊做,打块先啦!", + "做,做碌鸠啊做,打块先啦!", "ALLSPIN!", "Am G F G", "B2B2B???", diff --git a/parts/language/lang_zh3.lua b/parts/language/lang_zh3.lua new file mode 100644 index 00000000..d15b1ea9 --- /dev/null +++ b/parts/language/lang_zh3.lua @@ -0,0 +1,960 @@ +local C=COLOR +return{ + loadText={ + loadSFX="加载音效", + loadVoice="加载语音包", + loadFont="加载字体", + loadModeIcon="加载模式图标", + loadMode="加载方式", + loadOther="加载其他资产", + finish="按任意按钮开始!", + }, + sureQuit="再次按退出", + newDay="新的一天,新的开始!", + playedLong="你已经玩了很长时间了。一定要好好休息!", + playedTooMuch="你玩得太久了!玩方块游戏很有趣,但现在是休息的时候了。", + + atkModeName={"随机的","徽章","击败","攻击者"}, + royale_remain="剩余1美元球员", + powerUp={[0]="+000%","+025%","+050%","+075%","+100%"}, + cmb={nil,"1连击","2连击","3连击","4连击","5连击","6连击","7连击","8连击","9连击","10连击!","11连击!","12连击!","13连击!","14连击!","15连击!","16连击!","17连击!","18连击!","19连击!","中巴"}, + spin="-旋转", + clear={"单身","双重的","三倍的","技术崩溃","五角大楼","六面体碰撞"}, + mini="迷你",b2b="商对商",b3b="商对商对商", + PC="清清楚楚",HPC="半完美清晰", + replaying="[重播]", + tasUsing="[TAS]", + + stage="第一阶段已完成", + great="伟大的", + awesome="令人惊叹的!", + almost="几乎!", + continue="继续前进!", + maxspeed="最高速度!", + speedup="加快", + missionFailed="错误清除", + + speedLV="速度水平", + piece="块",line="线",atk="攻击",eff="效率", + rpm="转速",tsd="热关断", + grade="等级",techrash="技术崩溃", + wave="波动",nextWave="下一个", + combo="联合体",maxcmb="最大连击", + pc="清清楚楚",ko="击倒对手", + + win="赢", + lose="失去", + + finish="完成", + gamewin="你赢了", + gameover="游戏结束", + + pause="暂停", + pauseCount="停顿", + finesse_ap="完美无缺", + finesse_fc="全组合", + + page="第页:", + + ai_fixed="AI与固定序列不兼容", + ai_prebag="AI与具有非四格拼板的自定义序列不兼容", + ai_mission="AI与自定义任务不兼容", + switchSpawnSFX="请打开繁殖特技效果", + ranks={"D","C","B","A.","s"}, + needRestart="请重试以使更改生效", + + saveDone="保存的数据", + saveError="未能保存:", + saveError_duplicate="重复文件名", + loadError="未能加载:", + exportSuccess="成功导出", + importSuccess="导入成功", + dataCorrupted="数据损坏", + pasteWrongPlace="贴错地方了?", + noFile="找不到文件", + + nowPlaying="现在播放:", + + VKTchW="触重", + VKOrgW="起始重量", + VKCurW="现在的位置重量", + + noScore="还没有分数", + modeLocked="锁定", + unlockHint="在先决条件模式下达到D级或更高级别以解锁", + highScore="个人最好成绩", + newRecord="新纪录!", + + replayBroken="无法加载重播", + + getNoticeFail="获取通知失败", + oldVersion="版本$1现已推出!", + needUpdate="需要更新版本!", + versionNotMatch="版本不匹配!", + notFinished="马上就来!", + + jsonError="JSON错误", + + noUsername="请指定用户名", + wrongEmail="您输入的电子邮件地址不正确", + noPassword="请输入您的密码", + diffPassword="密码不匹配", + registerRequestSent="已发送注册请求", + registerSuccessed="注册成功!", + loginSuccessed="您现在已登录!", + accessSuccessed="允许访问", + + wsConnecting="双向通信连接", + wsFailed="双向通信连接失败", + wsClose="双向通信已关闭:", + netTimeout="网络连接超时", + + onlinePlayerCount="在线 的", + createRoomSuccessed="房间成功创建!", + started="玩", + joinRoom="他加入了房间", + leaveRoom="他离开了房间", + ready="准备好的", + connStream="连接", + waitStream="等待", + spectating="凝视", + chatRemain="在线 的", + chatStart="------日志开始------", + chatHistory="------下面是新消息------", + + errorMsg="技术米诺遇到问题,需要重新启动。\n您可以将错误日志发送给开发人员。", + + modInstruction="选择你的修改器\n多器官功能障碍允许您更改游戏。\n它们也可能以奇怪的方式破坏游戏。\n请注意,多器官功能障碍将导致您的游戏取消排名!", + modInfo={ + next="下一步\n减少下一步的数量", + hold="保持\n减少保持件的数量", + hideNext="隐藏的下一个\n在下一个队列中包含特定数量的碎片", + infHold="无限持有 \n允许您无限地持有碎片", + hideBlock="隐藏当前工件:\n使您控制的工件不可见", + hideGhost="无重影\n使重影片段不可见", + hidden="隐藏锁定的片段\n使锁定的片段淡出", + hideBoard="隐藏板\n局部或完全隐藏字段", + flipBoard="翻转板\n翻转或旋转场", + dropDelay="重力\n以帧/块为单位降低下降速度", + lockDelay="锁定延迟\n以帧为单位减少锁定延迟", + waitDelay="繁殖延迟\n以帧为单位减少繁殖延迟", + fallDelay="线路清除延迟\n以帧为单位减少线路清除延迟", + life="寿命\n更改附加寿命的初始数量", + forceB2B="仅商对商\n当商对商仪表下降到初始线以下时,停止游戏", + forceFinesse="仅使用技巧\n在出现任何技巧错误的情况下使用该游戏", + tele="远程传送\n强制0达斯和0啊", + noRotation="无旋转\n不允许工件旋转", + noMove="无移动\n禁止左右移动", + customSeq="随机发生器\n为块序列生成随机发生器", + pushSpeed="垃圾速度\n降低垃圾线(块/帧)的上升速度", + boneBlock="[]\n使用[]块播放", + }, + pauseStat={ + "时间:", + "按键/旋转/保持:", + "作品:", + "行/挖掘:", + "攻击/数字攻击:", + "收到:", + "清除:", + "旋转:", + "商对商/商对商对商/个人电脑/直升机性能计算机:", + "技巧:", + }, + radar={"很棒","关","攻击","发送","自给能探测器","挖掘"}, + radarData={"下午","认证确定包标记","高级电源管理","冲击脉冲","下午好","每分钟衰变"}, + stat={ + "推出的时报:", + "播放计数:", + "播放时间:", + "按键/旋转/保持:", + "块/行/攻击.:", + "记录/记录/分类:", + "挖掘/挖掘:", + "效率/挖掘效率:", + "商对商/商对商对商:", + "个人电脑/直升机性能计算机:", + "技巧错误/技巧率:", + }, + aboutTexts={ + "这只是一个普通的积木堆垛机。真的,就这样", + "它的灵感来自C2/IO/JS/WWC/KOS等", + "", + "以LÖVE为动力", + "任何建议或错误报告都将不胜感激!", + "确保只从官方渠道获得游戏,", + "因为如果你在别处找到它,我们无法确保你的安全", + "作者不对任何修改负责", + "虽然游戏是免费的,但我们感谢捐款" + }, + staff={ + "作者:MrZ 邮箱:1046101471@qq.com", + "使用LÖVE引擎", + "", + "程序: MrZ, 粒子G, [呵呵, FinnTenzor]", + "美术: MrZ, Gnyar, ScF, [C29H25N3O5, 旋律星萤, T0722]", + "音乐: MrZ, 柒栎流星, ERM, 特雷伯尔, [T0722, 以太]", + "音效/语音: Miya, 小亚, 东西, MrZ", + "演出: 模电, HBM", + "翻译: User670, MattMayuga, Mizu, Mr.Faq, ScF", + "", + "特别感谢:", + "Flyz, 大真, 不是机器人, 思竣, yuhao7370", + "放屁者, 茶管, 蕴空之灵, T9972, [All test staff]", + }, + used=[[ + 使用工具: + Beepbox + Goldwave + GFIE + FL Mobile + 使用库: + Cold_Clear [MinusKelvin] + json.lua [rxi] + profile.lua [itraykov] + simple-love-lights [dylhunn] + ]], + support="支持作者", + group="加入我们的不谐和:不谐和.gg/f9pUvkh", + WidgetText={ + main={ + offline="单人", + qplay="最后一场", + online="多人游戏", + custom="定制游戏", + setting="设置", + stat="统计", + music="音乐与东南", + dict="四联词典", + replays="重播", + }, + main_simple={ + sprint="冲刺", + marathon="马拉松赛跑", + }, + mode={ + mod="多器官功能障碍(F1)", + start="开始", + }, + mod={ + title="多器官功能障碍", + reset="重置(选项卡)", + unranked="未分级", + }, + pause={ + setting="设置", + replay="重播(P)", + save="保存(O)", + resume="恢复(esc)", + restart="重试(R)", + quit="退出(Q)", + tas="TAS(T)", + }, + net_menu={ + league="技术联盟", + ffa="游离脂肪酸", + rooms="房间", + logout="注销", + }, + net_league={ + match="找到匹配项", + }, + net_rooms={ + password="密码", + refreshing="清新的房间", + noRoom="现在没有房间了...", + refresh="刷新", + new="新房间", + join="参加", + }, + net_newRoom={ + title="房间配置", + roomName="房间名称(默认为用户名的房间)", + password="密码", + description="房间描述", + + life="生活", + pushSpeed="推进速度", + garbageSpeed="垃圾速度", + visible="可见度", + freshLimit="锁定重置限制", + + fieldH="田间高度", + bufferLimit="缓冲区限制", + heightLimit="高度限制", + + drop="下降延迟", + lock="锁定延迟", + wait="进入延迟", + fall="线路延迟", + + capacity="容量", + create="创造", + + ospin="O型自旋", + fineKill="100%精巧", + b2bKill="没有商对商中断", + easyFresh="正常锁复位", + deepDrop="深滴", + bone="骨块", + + eventSet="规则集", + + nextCount="下一个", + holdCount="持有", + infHold="无限持有", + phyHold="原地等待", + }, + net_game={ + ready="准备好的", + spectate="凝视", + cancel="取消", + }, + setting_game={ + title="游戏设置", + graphic="←视频", + sound="声音→", + + ctrl="控制设置", + key="键映射", + touch="触摸设置", + reTime="启动延迟", + RS="轮换制", + layout="布局", + menuPos="菜单按钮位置", + sysCursor="使用系统游标", + autoPause="心不在焉", + swap="组合键(更改攻击模式)", + autoSave="自动保存新的最佳", + simpMode="简单化风格", + }, + setting_video={ + title="视频设置", + sound="←声音", + game="游戏→", + + block="绘图块", + smooth="滑落", + upEdge="三维块", + bagLine="袋式分离器", + + ghostType="鬼型", + ghost="鬼魂", + center="居中", + grid="网格", + lineNum="线路号", + + lockFX="锁定外汇", + dropFX="下降外汇", + moveFX="移动外汇", + clearFX="外汇结算", + splashFX="飞溅外汇", + shakeFX="磁场摆动", + atkFX="Atk外汇", + frame="渲染帧率(%)", + + text="行清除弹出窗口", + score="分数弹出窗口", + bufferWarn="缓冲区警报", + showSpike="尖峰计数器", + nextPos="下次预览", + highCam="屏幕滚动", + warn="危险警报", + + clickFX="单击“外汇”", + power="电源信息", + clean="快速绘制", + fullscreen="全屏", + bg="背景", + + blockSatur="块饱和", + fieldSatur="场饱和", + }, + setting_sound={ + title="声音设置", + + game="←游戏", + graphic="视频→", + + mainVol="主卷", + bgm="背景音乐", + sfx="特技效果", + stereo="立体声", + spawn="发出声音", + warn="警告", + vib="振动", + voc="声音", + + autoMute="不聚焦时保持沉默", + fine="精细度误差", + sfxPack="特技效果包", + vocPack="语音包", + apply="申请", + }, + setting_control={ + title="控制设置", + preview="预览", + + das="达斯",arr="啊", + dascut="达斯切", + dropcut="自动锁定切割", + sddas="软滴达斯",sdarr="软降啊", + ihs="初始持有", + irs="初始旋转", + ims="初始运动", + reset="重置", + }, + setting_key={ + a1="向左移动", + a2="向右方移动", + a3="右转", + a4="向左旋转", + a5="旋转180°", + a6="硬滴", + a7="软滴", + a8="持有", + a9="功能1", + a10="功能2", + a11="立即离开", + a12="即时权利", + a13="音降", + a14="向下1", + a15="下降4", + a16="下降10", + a17="左撇子", + a18="右转", + a19="左桑吉", + a20="右桑吉", + restart="重试", + }, + setting_skin={ + skinSet="块状皮肤", + title="布局设置", + skinR="重置颜色", + faceR="重置目录", + }, + setting_touch={ + default="违约", + snap="断裂", + save1="储蓄1", + load1="负载1", + save2="储蓄2", + load2="负载2", + size="大小", + shape="形状", + }, + setting_touchSwitch={ + b1= "向左移动:", b2="右移:", b3="右转:", b4="向左旋转:", + b5= "旋转180°:", b6="硬滴:", b7="软跌落:", b8="持有:", + b9= "职能1:", b10="职能2:", b11="立即离开:",b12="即时权利:", + b13="音降:", b14="下降1:", b15="下降4:", b16="下降10:", + b17="左下降:", b18="右下角:",b19="左桑吉:", b20="右桑吉:", + + norm="正常的", + pro="专业的", + hide="显示虚拟密钥", + icon="偶像", + sfx="特技效果", + vib="振动", + alpha="阿尔法", + + track="自动跟踪", + dodge="自动闪避", + }, + customGame={ + title="定制游戏", + defSeq="默认顺序", + noMsn="没有任务", + + drop="下降延迟", + lock="锁定延迟", + wait="进入延迟", + fall="线路延迟", + + bg="背景", + bgm="音乐", + + copy="复制字段+序号+使命", + paste="粘贴字段+序号+使命", + clear="清场", + puzzle="开始拼图", + + reset="复位(Del)", + advance="更多(A)", + mod="多器官功能障碍(F1)", + field="编辑字段(F)", + sequence="编辑序列", + mission="编辑任务(M)", + + eventSet="规则集", + + nextCount="下一个", + holdCount="持有", + infHold="无限持有", + phyHold="原地等待", + + fieldH="田间高度", + visible="可见度", + freshLimit="锁定重置限制", + opponent="对手", + life="生活", + pushSpeed="推进速度", + garbageSpeed="垃圾速度", + + bufferLimit="缓冲区限制", + heightLimit="高度限制", + ospin="O型自旋", + fineKill="100%精巧", + b2bKill="没有商对商中断", + easyFresh="正常锁复位", + deepDrop="深滴", + bone="骨块", + }, + custom_field={ + title="定制游戏", + subTitle="领域", + + any="擦除", + space="×", + smart="聪明的", + + push="添加行(K)", + del="中线(L)", + + copy="复制", + paste="粘贴", + clear="清楚的", + demo="不要展示", + + newPg="新页(N)", + delPg="德尔佩奇(M)", + prevPg="前页", + nextPg="下一页", + }, + custom_sequence={ + title="定制游戏", + subTitle="序列", + + sequence="序列", + + Z="Z",S="s",J="J",L="L",T="T",O="O",I="我",left="←",right="→",ten="→→",backsp="", + "0下一个0等待", + "1下一个0等待", + "1下一个1等待!", + "1下一个6等待!", + "20G实际上是一个全新的游戏规则", + "40线冲刺WR:14.915s重置", + "6下一个1等待!", + "6下一个6等一下?!", + "成就系统即将推出!", + "旋转!", + "Am G F G", + "商对商对商???", + "商对商不存在", + "商对商存在吗?", + "背靠背技术崩溃,10连击,个人电脑!", + "今天一定要再次尽你最大的努力!", + "桥很快就清了!", + "你能熟练掌握这个现代而又熟悉的堆垛机吗?", + "在不谐和上可以找到英语的变更日志", + "颜色很快就会清晰!", + "酷!", + "降低达斯和啊速度更快,但更难控制", + "我刚才看到的是背靠背吗?", + "不要让一个小故障毁掉你的一天!", + "不要直接看虫子!", + "享受技术米诺旋转系统!", + "太好了,但下次我们要做得更好", + "找出设置中的内容!", + "有什么建议吗?在我们的不和谐中发布它们!", + "建议佩戴耳机以获得更好的体验", + "你好,世界!", + "I3和L3是仅有的两种独特的三聚体", + "如果a==真", + "提高帧速率以获得更好的体验", + "初始[插入操作]系统可以节省您的时间", + "商对商可能吗?", + "无需左/右按钮即可完成40升", + "它真的在加载!不仅仅是一个剪贴画!", + "加入我们的纷争吧!", + "让贝斯踢!", + "LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF", + "路亚一号", + "快来了!", + "这个游戏的音乐是使用Beepbox制作的", + "音乐太让人分心了?你可以把它关掉", + "如果您启用了简单化样式,则此菜单中没有复活节彩蛋!", + "旋转三倍!", + "啊,啊,啊,啊", + "已计划在线模式-请耐心等待", + "单枪匹马!", + "玩得好需要一些时间!", + "以LÖVE为动力", + "由团..LÖVE为动力", + "pps-0.01", + "后悔", + "秘密号码:626", + "服务器随机关闭", + "一些达到S级的要求被故意设定为即使是最好的球员也很难达到", + "很快,你就可以和全世界的朋友和敌人比赛了", + "马上就来!", + "技术米诺=技术+特特罗米诺", + "技术米诺有一个Nspire CX版本!", + "太有趣了!", + "四词典现在有英文版本", + "在技术米诺,堆垛机的未来属于您!", + "游戏中有四种隐藏模式", + "总共有18种不同的五分音符", + "总共有7种不同的河豚", + "尝试使用多个等待队列!", + "尝试使用两个旋转按钮。使用这三种方法会更好", + "警告:程序员艺术", + "20件怎么样?", + "100条生产线23件怎么样?", + "26个热关断怎么样?", + "这个便宜的界面和音乐是什么", + "当(假)", + "你是大师!", + "您可以将键盘连接到手机或平板电脑!", + "您可以使用键盘浏览菜单,但仅限于此屏幕", + "您可以从统计数据页面打开保存目录", + "在这个游戏中,你可以用29个米诺斯中的28个进行旋转;例外情况是O1", + "您可以为每个四格拼板设置繁殖方向", + "ZS JL T O I", + {C.C,"也试试15拼图!"}, + {C.C,"还试试我的世界!"}, + {C.C,"也试试扫雷艇!"}, + {C.C,"也试试奥兹米奇!"}, + {C.C,"也试试俄亥俄州立大学!"}, + {C.C,"也试试菲格罗斯!"}, + {C.C,"也试试魔方!"}, + {C.C,"也试试特拉里亚!"}, + {C.C,"也试试VVVVVV!"}, + {C.H,"后悔"}, + {C.lR,"Z",C.lG,"s",C.lS,"J",C.lO,"L",C.lP,"T",C.lY,"O",C.lC,"我"}, + {C.lY,"酷!"}, + {C.N,"Lua",C.Z,"第一"}, + {C.P,"旋转!"}, + {C.R,"\"滥用数字千年版权法\""}, + {C.R,"\"知识产权法\""}, + {C.R,"DT",C.Z,"大炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z,"大炮"}, + {C.R,"LrL",C.G,"RlR",C.B,"LLr",C.O,"RRl",C.P,"存款准备金率",C.P,"微光",C.C,"FFF",C.Y,"RfR",C.Y,"RRf",C.Y,"rFF"}, + {C.Y,"旋转三倍!"}, + {C.Z,"什么?",C.lC,"Xspin?"}, + } +} diff --git a/parts/net.lua b/parts/net.lua index 4637602a..1fa14c00 100644 --- a/parts/net.lua +++ b/parts/net.lua @@ -79,7 +79,7 @@ end --Parse notice local function _parseNotice(str) str=STRING.split(str,"///") - return str[SETTING.lang<=3 and 1 or 2]or str[1] + return str[SETTING.locale<=3 and 1 or 2]or str[1] end --WS close message diff --git a/parts/scenes/dict.lua b/parts/scenes/dict.lua index 9e3eb340..95f6ddc8 100644 --- a/parts/scenes/dict.lua +++ b/parts/scenes/dict.lua @@ -57,7 +57,7 @@ local function _search() end function scene.sceneInit() - dict=require("parts.language.dict_"..({"zh","zh","zh","en","en","en","en","en"})[SETTING.lang]) + dict=require("parts.language.dict_"..(SETTING.locale:find'zh'and'zh'or'en')) inputBox:clear() result={} diff --git a/parts/scenes/lang.lua b/parts/scenes/lang.lua index e706d00a..1f5f17a8 100644 --- a/parts/scenes/lang.lua +++ b/parts/scenes/lang.lua @@ -1,12 +1,14 @@ local langList={ - "中文", - "全中文", - "就这?", - "English", - "Français", - "Español", - "Português", - "?????", + zh="中文", + zh2="全中文", + en="English", + fr="Français", + es="Español", + pt="Português", + + grass="机翻", + yygq="就这?", + symbol="?????", } local scene={} @@ -15,22 +17,23 @@ function scene.sceneBack() saveSettings() end -local function _setLang(n) - SETTING.lang=n - LANG.set(n) +local function _setLang(lid) + SETTING.locale=lid + applyLanguage() TEXT.clear() - TEXT.show(langList[n],640,500,100,'appear',.626) + TEXT.show(langList[lid],640,500,100,'appear',.626) collectgarbage() end scene.widgetList={ - WIDGET.newButton{x=200,y=100,w=200,h=120,fText=langList[1],color='R',font=35,code=function()_setLang(1)end}, - WIDGET.newButton{x=420,y=100,w=200,h=120,fText=langList[2],color='dR',font=35,code=function()_setLang(2)end}, - WIDGET.newButton{x=640,y=100,w=200,h=120,fText=langList[3],color='D',font=35,code=function()_setLang(3)end}, - WIDGET.newButton{x=860,y=100,w=200,h=120,fText=langList[4],color='N',font=35,code=function()_setLang(4)end}, - WIDGET.newButton{x=1080,y=100,w=200,h=120,fText=langList[5],color='lW',font=35,code=function()_setLang(5)end}, - WIDGET.newButton{x=200,y=250,w=200,h=120,fText=langList[6],color='O',font=35,code=function()_setLang(6)end}, - WIDGET.newButton{x=420,y=250,w=200,h=120,fText=langList[7],color='Y',font=35,code=function()_setLang(7)end}, - WIDGET.newButton{x=640,y=250,w=200,h=120,fText=langList[8],color='dH',font=35,code=function()_setLang(8)end}, + WIDGET.newButton{x=200,y=100,w=200,h=120,fText=langList.zh, color='R', font=35,code=function()_setLang('zh')end}, + WIDGET.newButton{x=420,y=100,w=200,h=120,fText=langList.zh2, color='dR',font=35,code=function()_setLang('zh2')end}, + WIDGET.newButton{x=640,y=100,w=200,h=120,fText=langList.en, color='N', font=35,code=function()_setLang('en')end}, + WIDGET.newButton{x=860,y=100,w=200,h=120,fText=langList.fr, color='lW',font=35,code=function()_setLang('fr')end}, + WIDGET.newButton{x=1080,y=100,w=200,h=120,fText=langList.es, color='O', font=35,code=function()_setLang('es')end}, + WIDGET.newButton{x=200,y=250,w=200,h=120,fText=langList.pt, color='Y', font=35,code=function()_setLang('pt')end}, + WIDGET.newButton{x=200,y=550,w=200,h=120,fText=langList.grass, color='lG',font=35,code=function()_setLang('grass')end}, + WIDGET.newButton{x=420,y=550,w=200,h=120,fText=langList.yygq, color='D', font=35,code=function()_setLang('yygq')end}, + WIDGET.newButton{x=640,y=550,w=200,h=120,fText=langList.symbol,color='dH',font=35,code=function()_setLang('symbol')end}, WIDGET.newButton{name="back",x=1140,y=640,w=170,h=80,fText=TEXTURE.back,code=backScene}, } diff --git a/parts/scenes/manual.lua b/parts/scenes/manual.lua index 036926f7..d85ee6a3 100644 --- a/parts/scenes/manual.lua +++ b/parts/scenes/manual.lua @@ -2,7 +2,7 @@ local scene={} function scene.sceneInit() BG.set('cubes') - WIDGET.active.texts:setTexts(require("parts.language.manual_"..({'zh','zh','zh','en','en','en','en','en'})[SETTING.lang])) + WIDGET.active.texts:setTexts(require("parts.language.manual_"..({'zh','zh','zh','en','en','en','en','en'})[SETTING.locale])) end function scene.wheelMoved(_,y)