From ee99cd9786b42667000abc07d8b7a28ab7d5c0d4 Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Sat, 2 Jan 2021 21:03:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=86=E5=A4=87=E5=A5=BD=E8=91=A1=E8=90=84?= =?UTF-8?q?=E7=89=99=E8=AF=AD=E6=96=87=E4=BB=B6=E7=AD=89=E5=BE=85=E7=BF=BB?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.lua | 2 + parts/language/lang_pt.lua | 830 +++++++++++++++++++++++++++++++++++++ parts/scenes/lang.lua | 15 +- 3 files changed, 840 insertions(+), 7 deletions(-) create mode 100644 parts/language/lang_pt.lua diff --git a/main.lua b/main.lua index 294d6621..cfed5332 100644 --- a/main.lua +++ b/main.lua @@ -201,6 +201,7 @@ LANG.setLangList{ require"parts/language/lang_en", require"parts/language/lang_fr", require"parts/language/lang_sp", + require"parts/language/lang_pt", require"parts/language/lang_symbol", require"parts/language/lang_yygq", --1. Add language file to LANG folder; @@ -248,6 +249,7 @@ LANG.setPublicWidgetText{ en="English", fr="Français", sp="Español", + pt="Português", symbol="?????", yygq="就这?", }, diff --git a/parts/language/lang_pt.lua b/parts/language/lang_pt.lua new file mode 100644 index 00000000..861b62e1 --- /dev/null +++ b/parts/language/lang_pt.lua @@ -0,0 +1,830 @@ +return{ + back="Back", + anykey="Press any button", + newVersion="Thanks for updating! Check out the updates below.", + httpTimeout="Network connection timed out", + marking="Game Author: MrZ_26\nIllegal recording if you can see this\nAny explanation is invalid", + holdR="Keep holding to retry", + newDay="[Anti-addiction] New day, new beginning!", + playedLong="[Anti-addiction] You've been playing quite a bit today. Make sure to take breaks.", + playedTooMuch="[Anti-addiction] You've been playing too much today! You can't play any more.", + + atkModeName={"Random","Badges","K.O.s","Attackers"}, + royale_remain="$1 Players Remaining", + cmb={nil,"1 Combo","2 Combo","3 Combo","4 Combo","5 Combo","6 Combo","7 Combo","8 Combo","9 Combo","10 Combo!","11 Combo!","12 Combo!","13 Combo!","14 Combo!!","15 Combo!!","16 Combo!!","17 Combo!!!","18 Combo!!!","19 Combo!!!","MEGACMB"}, + spin="-Spin ", + clear={"Single","Double","Triple","Techrash","Pentacrash","Hexacrash"}, + mini="Mini",b2b="B2B ",b3b="B2B2B ", + PC="Perfect Clear",HPC="Clear", + hold="HOLD",next="NEXT", + + stage="Stage $1", + great="Great!", + awesome="Awesome!", + almost="Almost!", + continue="Keep going!", + maxspeed="Max speed!", + speedup="Speed up!", + missionFailed="Wrong Clear", + + speedLV="speed level", + line="Lines",atk="Attack",eff="Efficiency", + rpm="RPM",tsd="TSD", + grade="Grade",techrash="Techrash", + wave="Wave",nextWave="Next", + combo="Combo",maxcmb="Max Combo", + pc="Perfect Clear",ko="KO", + + win="You Win!", + finish="Finish", + gameover="Game Over", + pause="Pause", + pauseCount="Pauses", + finesse_ap="All Perfect", + finesse_fc="Full Combo", + + page="Page:", + + ai_fixed="The AI is incompatible with fixed sequences.", + ai_prebag="The AI is incompatible with custom sequences.", + ai_mission="The AI is incompatible with custom missions.", + saveDone="Data Saved", + saveError="Failed to save:", + loadError="Failed to read:", + switchSpawnSFX="Switch on spawn SFX to play", + ranks={"D","C","B","A","S"}, + + needRestart="Effective after restart", + + exportSuccess="Exported successfully", + importSuccess="Imported successfully", + dataCorrupted="Data corrupted", + + VKTchW="Touch Weight", + VKOrgW="Origin Weight", + VKCurW="Cur. Pos. Weight", + + noScore="No Scores Yet", + highScore="Personal Bests", + newRecord="New Record!", + + getNoticeFail="Couldn't get announcements", + getVersionFail="Unable to detect a new version", + versionIsNew="You are now on the latest version.", + versionIsOld="Version $1 is available now!", + + netErrorCode="Network error code", + jsonError="Json error", + + noUsername="Please enter your username", + wrongEmail="Wrong email address", + noPassword="Please enter your password", + diffPassword="Passwords don't match", + registerSuccessed="Successfully registered!", + registerFailed="Registration failed", + loginSuccessed="Successfully logged in!", + loginFailed="Login failed", + accessSuccessed="Successfully authorized!", + accessFailed="Authorization failed", + wsSuccessed="WebSocket: connected", + wsFailed="WebSocket: connection failed", + wsDisconnected="WebSocket: disconnected", + wsNoConn="WebSocket: you are not connected", + waitNetTask="Connecting, please wait", + + chatJoin="joined the room.", + chatLeave="left the room.", + chatRemain="Online: ", + chatStart="------Beginning of log------", + chatHistory="------New messages below------", + chatQuit="Press again to exit", + + noRooms="No Rooms Now", + roomsFetchFailed="Failed to fetch rooms", + + errorMsg="An error has occurred and Techmino needs to restart.\nError info has been created, and you can send it to the author.", + + modInstruction="Select mods (modifiers) to use!\nMods will modify the game in different ways\n(and possibly break the game in weird ways).\nSome mods will make your game unranked.", + modInfo={ + next="Next\nOverride the Next queue length", + hold="Hold\nOverride the Hold queue length", + hideNext="Hidden Next\nHide a few upcoming Next preview pieces", + infHold="Infinite Hold\nYou can use the Hold function infinitely.", + hideBlock="Hide current block:\nMake the piece you are controlling invisible", + hideGhost="Hide ghost\nMake ghost invisible", + hidden="Hide dropped blocks\nPieces fade disappear after lockdown", + hideBoard="Hide board\nHide part of the board, or the entire board", + flipBoard="Flip board\nFlip or rotate the board.", + dropDelay="Falling speed\nOverride falling speed (unit: frames/block)", + lockDelay="Lockdown delay\nOverride lockdown delay (unit: frames)", + waitDelay="Spawn delay\nOverride spawn delay (unit: frames)", + fallDelay="Line delay\nOverride line delay (unit: frames)", + life="Life\nOverride number of lives players begin with", + forceB2B="B2B only\nGame ends when B2B gauge drops below startup line", + forceFinesse="Finesse only\nGame ends on finesse fault", + tele="Teleport\nForce 0 DAS and 0 ARR movement", + noRotation="No rotation\nRotation buttons are disabled", + noMove="No movement\nLeft and right movement buttons are disabled", + customSeq="Randomizer\nOverride the randomizer for the game", + pushSpeed="Garbage speed\nOverride the speed at which garbage lines rise (unit: blocks/frame)", + boneBlock="Bone\nPlay with the bone block skin", + }, + acts={ + "Move Left:","Move Right:", + "Rotate Right:","Rotate Left:","Rotate 180°:", + "Hard Drop:","Soft Drop:","Hold:","Function:","Restart:", + "Instant Left:","Instant Right:","Sonic Drop:","Down 1:","Down 4:","Down 10:", + "Left Drop:","Right Drop:","Left Zangi:","Right Zangi:", + }, + pauseStat={ + "Time:", + "Key/Rot./Hold:", + "Piece:", + "Row/Dig:", + "Attack/DigAtk:", + "Received:", + "Clears:", + "Spins:", + "B2B/B3B/PC/HPC:", + "Finesse:", + }, + radar={"DEF","OFF","ATK","SEND","SPD","DIG"}, + radarData={ + "D'PM", + "ADPM", + "APM", + "SPM", + "L'PM", + "DPM", + }, + stat={ + "Times Launched:", + "Play Count:", + "Play Time:", + "Key/Rot./Hold:", + "Block/Row/Atk.:", + "Recv./Res./Asc.:", + "Dig/Dig Atk.:", + "Eff./Dig Eff.:", + "B2B/B3B:", + "PC/HPC:", + "FnsErrs./FnsRate:", + }, + help={ + "Now you can play this - you probably do not need \"help\"?", + "This is just an ordinary block game, not a certain one.", + "It plays like TO/C2/KOS/TGM3 and others.", + "", + "Powered by Love 2D Engine", + "Please send bugs or suggestions to the author.", + "Make sure to only obtain the game from official sources;", + "binaries obtained elsewhere might contain malware.", + "The author is not responsible for any modified binaries.", + "While the game is free, donations are appreciated." + }, + staff={ + "Author: MrZ E-mail: 1046101471@qq.com", + "Powered by LOVE2D", + "", + "Program: MrZ, Particle_G, [T9972, FinnTenzor]", + "Art: MrZ, [Gnyar, T0722]", + "Music: MrZ, [T0722]", + "Voice & Sound: Miya, Naki, MrZ Performance: 模电, HBM", + "Test: 思竣 Net: 渣渣120", + "English: User670, MattMayuga", + "French: Mizu Spanish: Mr.Faq", + "", + "Special Thanks:", + "Flyz, Farter, 蕴空之灵,", + "Teatube, [All test staff]", + }, + used=[[ + Tools used: + Beepbox + GFIE + Goldwave + Libs used: + Cold_Clear [MinusKelvin] + json.lua [rxi] + profile.lua [itraykov] + simple-love-lights [dylhunn] + ]], + support="Support author", + group="Join our Discord: discord.gg/f9pUvkh", + WidgetText={ + main={ + offline="Single", + online="Multi", + custom="Custom", + stat="Statistics", + setting="Settings", + qplay="Q. Play", + lang="言/A", + help="Help", + quit="Exit", + music="Music Room", + sound="SE Room", + }, + mode={ + mod="Mods (F1)", + start="Start", + }, + mod={ + title="Mods", + reset="Reset (tab)", + unranked="Unranked", + }, + play={ + pause="Pause", + }, + pause={ + setting="Settings (S)", + replay="Replay (P)", + save="Save (O)", + resume="Resume (esc)", + restart="Retry (R)", + quit="Quit (Q)", + }, + net_menu={ + ffa="FFA", + rooms="Rooms", + chat="Chat", + }, + net_rooms={ + fresh="Fresh", + up="↑", + down="↓", + }, + net_chat={ + clear="Clear", + send="Send", + }, + setting_game={ + title="Game Settings", + graphic="←Video", + sound="Sound→", + + ctrl="Control Settings", + key="Key Mappings", + touch="Touch Settings", + reTime="Start Delay", + RS="Rotation System", + layout="Layout", + autoPause="Pause when focus is lost", + swap="Key Combination (Change Atk. Mode)", + fine="Finesse Error Sound", + appLock="App Lock (Password: 626)", + calc="App Lock", + }, + setting_video={ + title="Video Settings", + sound="←Sound", + game="Game→", + + block="Draw Block", + ghost="Ghost", + center="Center", + + smooth="Smooth Drop", + grid="Grid", + bagLine="Bag Line", + + lockFX="Lock FX Level", + dropFX="Drop FX Level", + moveFX="Move FX Level", + clearFX="Clear FX Level", + splashFX="Splash FX Level", + shakeFX="Field Sway Level", + atkFX="Atk. FX Level", + frame="Render Frame Rate", + + text="Action Text", + score="Score Pop-up", + warn="Danger Alert", + highCam="Birds-eye View", + nextPos="Next Preview", + fullscreen="Full Screen", + bg="Background", + power="Power Info", + }, + setting_sound={ + title="Sound Settings", + + game="←Game", + graphic="Video→", + + sfx="SFX", + stereo="Stereo", + spawn="Spawning", + bgm="BGM", + vib="Vibration", + voc="Voice", + cv="Voice Pack", + apply="Apply", + }, + setting_control={ + title="Control Settings", + preview="Preview", + + das="DAS",arr="ARR",dascut="DAS cut", + sddas="Soft Drop DAS",sdarr="Soft Drop ARR", + ihs="Initial Hold", + irs="Initial Rotation", + ims="Initial Movement", + reset="Reset", + }, + setting_key={ + keyboard="Keyboard", + joystick="Controller", + help="Arrow keys: select/change slot, Enter/Space: Change, Esc: Go back", + }, + setting_skin={ + title="Layout Settings", + spin1="R",spin2="R",spin3="R",spin4="R",spin5="R",spin6="R",spin7="R", + skinR="Reset Color", + faceR="Reset Dir.", + }, + setting_touch={ + default="Default", + snap="Snap", + option="Options", + size="Size", + }, + setting_touchSwitch={ + b1= "Move Left:", b2="Move Right:", b3="Rotate Right:", b4="Rotate Left:", + b5= "Rotate 180°:", b6="Hard Drop:", b7="Soft Drop:", b8="Hold:", + b9= "Function:", b10="Restart Game:", b11="Instant Left:",b12="Instant Right:", + b13="Sonic Drop:", b14="Down 1:", b15="Down 4:", b16="Down 10:", + b17="Left Drop:", b18="Right Drop:", b19="Left Zangi:", b20="Right Zangi:", + norm="Normal", + pro="Professional", + hide="Show Virtual Keys", + track="Auto Track", + sfx="SFX", + vib="VIB", + icon="Icon", + tkset="Track Settings", + alpha="Alpha", + }, + setting_trackSetting={ + VKDodge="Auto Dodge", + }, + customGame={ + title="Custom Game", + subTitle="Basic", + defSeq="Default Seq.", + noMsn="No missions", + + drop="Drop Delay", + lock="Lock Delay", + wait="Entry Delay", + fall="Line Delay", + + bg="Background", + bgm="Music", + + copy="Copy Field+Seq+Misn", + paste="Paste Field+Seq+Misn", + clear="Start-Clear", + puzzle="Start-Puzzle", + + advance="More (A)", + mod="Mods", + field="Edit Field (F)", + sequence="Edit Sequence (S)", + mission="Edit Mission (M)", + }, + custom_advance={ + title="Custom Game", + subTitle="Advance", + + nextCount="Next", + holdCount="Hold", + infHold="Infinite Hold", + block="Draw Block", + ghost="Ghost", + center="Center", + bagLine="Bag Line", + highCam="Birds-eye View", + nextPos="Next Preview", + bone="Bone Blocks", + + mindas="Min. DAS", + minarr="Min. ARR", + minsdarr="Min. SDARR", + noTele="No Teleportation", + RS="Rotation System", + ospin="O-Spin", + target="Target", + visible="Visibility", + freshLimit="Lock Reset Limit", + easyFresh="Normal Lock Reset", + fineKill="100% Finesse", + b2bKill="No B2B break", + opponent="Opponent", + life="Lives", + pushSpeed="Garbage Speed", + }, + custom_field={ + title="Custom Game", + subTitle="Field", + + any="Erase", + space="×", + + pushLine="Add Line(K)", + delLine="Del Line(L)", + + copy="Copy", + paste="Paste", + clear="Clear", + demo="Don't Show ×", + + newPage="New Page(N)", + delPage="Del Page(M)", + prevPage="Prev Page", + nextPage="Next Page", + }, + custom_sequence={ + title="Custom Game", + subTitle="Sequence", + + sequence="Sequence", + + Z="Z",S="S",J="J",L="L",T="T",O="O",I="I",left="←",right="→",ten="→→",backsp="", + "0next 0hold.", + "1next 0hold", + "1next 1hold!", + "1next 6hold!", + "20G actually is a brand new game rule.", + "40-line Sprint WR: 15.654s by VinceHD", + "6next 1hold!", + "6next 6hold?!", + "ALL SPIN!", + "Am G F G", + "B2B2B???", + "B2B2B2B does not exist..", + "B2B2B2B exists?", + "Back to Back 10 Combo Techrash PC!", + "Bridge clear coming soon!", + "Change logs in English can be found on Discord.", + "Cheap UI & Music", + "COOL!!", + "Decreasing DAS and ARR: faster but harder to control.", + "Don't let a small glitch ruin your entire day!", + "Don't look directly at the bugs!", + "e^(pi*i)=-1", + "e^(pi*i/2)=i", + "e^(pi*i/4)=(1+i)/√2", + "Enjoy the Techmino rotation system!", + "Find out what's in the settings!", + "Got any suggestions? Post them in our Discord!", + "Headphones recommended for better experience.", + "Hello world!", + "if a==true", + "Increase your frame rate for better experience.", + "Initial [insert action] system can save your life.", + "Is B2B2B2B possible?", + "It's possible to finish 40L without left/right button.", + "It's really loading! Not just a cutscene!", + "Join our discord!", + "l-=-1", + "Let-The-Bass-Kick!", + "LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF", + "Lua No.1", + "Music too distracting? You can turn it off.", + "Musics are made with beepbox", + "O-Spin Triple!", + "OHHHHHHHHHHHHHH", + "Online mode is planned - please be patient.", + "Only 2 triminoes", + "Piracy is no party!", + "Play single-handedly!", + "Powered by Love2D", + "pps-0.01", + "REGRET!!", + "Secret number: 626", + "Split clear coming soon!", + "Techmino = Technique + Tetromino", + "Techmino has a Nspire-CX edition!", + "Techmino is so fun!", + "TetroDictionary is now available in English.", + "There are three hidden modes in the game.", + "There is a total of 18 different pentominoes.", + "There is a total of 7 different tetrominoes.", + "Try using two rotate buttons. All three is better.", + "Warning: Programmer Art", + "What about 20 PCs?", + "What about 23 PCs in 100 lines?", + "What about 26 TSDs?", + "while(false)", + "You are Grand Master!", + "You can connect keyboard to your phone!", + "You can do spins with 28 of 29 minoes!", + "You can open the save directory from the Stats page.", + "You can set an orientation for each block.", + "ZS JL T O I", + {COLOR.cyan,"Also try 15puzzle"}, + {COLOR.cyan,"Also try Minecraft"}, + {COLOR.cyan,"Also try Minesweeper"}, + {COLOR.cyan,"Also try osu!"}, + {COLOR.cyan,"Also try Phigros"}, + {COLOR.cyan,"Also try Rubic's cube"}, + {COLOR.cyan,"Also try Terraria"}, + {COLOR.cyan,"Also try VVVVVV"}, + {COLOR.fire,"Also try Cultris II"}, + {COLOR.fire,"Also try Jstris"}, + {COLOR.fire,"Also try Nullpomino"}, + {COLOR.fire,"Also try Tetr.io"}, + {COLOR.fire,"Also try Tetr.js"}, + {COLOR.fire,"Also try Tetralegends"}, + {COLOR.grape,"T-spin!"}, + {COLOR.grey,"暫定段位:9"}, + {COLOR.grey,"REGRET!!"}, + {COLOR.lR,"Z ",COLOR.lG,"S ",COLOR.lSea,"J ",COLOR.lOrange,"L ",COLOR.lGrape,"T ",COLOR.lY,"O ",COLOR.lC,"I"}, + {COLOR.lY,"COOL!!"}, + {COLOR.R,"\"DMCA abusing\""}, + {COLOR.R,"\"Intellectual property law\""}, + {COLOR.R,"DT",COLOR.W," Cannon=",COLOR.grape,"TS",COLOR.R,"D",COLOR.W,"+",COLOR.grape,"TS",COLOR.R,"T",COLOR.W," Cannon"}, + {COLOR.R,"LrL ",COLOR.G,"RlR ",COLOR.B,"LLr ",COLOR.orange,"RRl ",COLOR.grape,"RRR ",COLOR.grape,"LLL ",COLOR.C,"FFF ",COLOR.Y,"RfR ",COLOR.Y,"RRf ",COLOR.Y,"rFF"}, + {COLOR.sky,"Lua",COLOR.W," No.1"}, + {COLOR.W,"What is ",COLOR.lC,"Xspin"}, + {COLOR.Y,"暫定段位:GM"}, + {COLOR.Y,"暫定段位:M"}, + {COLOR.Y,"暫定段位:MK"}, + {COLOR.Y,"暫定段位:MM"}, + {COLOR.Y,"暫定段位:MO"}, + {COLOR.Y,"暫定段位:MV"}, + {COLOR.Y,"O-spin Triple!"}, + } +} diff --git a/parts/scenes/lang.lua b/parts/scenes/lang.lua index 6c6b7d6e..5f4f679f 100644 --- a/parts/scenes/lang.lua +++ b/parts/scenes/lang.lua @@ -6,13 +6,14 @@ end local function setLang(n)return function()SETTING.lang=n LANG.set(n)end end scene.widgetList={ - WIDGET.newButton{name="zh", x=200, y=100,w=200,h=120,font=45,code=setLang(1)}, - WIDGET.newButton{name="zh2", x=420, y=100,w=200,h=120,font=45,code=setLang(2)}, - WIDGET.newButton{name="en", x=640, y=100,w=200,h=120,font=45,code=setLang(3)}, - WIDGET.newButton{name="fr", x=860, y=100,w=200,h=120,font=45,code=setLang(4)}, - WIDGET.newButton{name="sp", x=1080, y=100,w=200,h=120,font=45,code=setLang(5)}, - WIDGET.newButton{name="symbol", x=200, y=250,w=200,h=120,font=45,code=setLang(6)}, - WIDGET.newButton{name="yygq", x=420, y=250,w=200,h=120,font=45,code=setLang(7)}, + WIDGET.newButton{name="zh", x=200, y=100,w=200,h=120,font=35,code=setLang(1)}, + WIDGET.newButton{name="zh2", x=420, y=100,w=200,h=120,font=35,code=setLang(2)}, + WIDGET.newButton{name="en", x=640, y=100,w=200,h=120,font=35,code=setLang(3)}, + WIDGET.newButton{name="fr", x=860, y=100,w=200,h=120,font=35,code=setLang(4)}, + WIDGET.newButton{name="sp", x=1080, y=100,w=200,h=120,font=35,code=setLang(5)}, + WIDGET.newButton{name="pt", x=200, y=250,w=200,h=120,font=35,code=setLang(6)}, + WIDGET.newButton{name="symbol", x=420, y=250,w=200,h=120,font=35,code=setLang(7)}, + WIDGET.newButton{name="yygq", x=640, y=250,w=200,h=120,font=35,code=setLang(8)}, WIDGET.newButton{name="back", x=640, y=600,w=200,h=80,font=35,code=WIDGET.lnk_BACK}, }