diff --git a/main.lua b/main.lua index 2c8ab8ef..55644f11 100644 --- a/main.lua +++ b/main.lua @@ -502,6 +502,7 @@ LANG.init('zh', ja=require'parts.language.lang_ja', symbol=require'parts.language.lang_symbol', zh_code=require'parts.language.lang_zh_code', + vi=require'parts.language.lang_vi', -- 1. Add language file to LANG folder; -- 2. Require it; -- 3. Add a button in parts/scenes/lang.lua; diff --git a/parts/language/lang_vi.lua b/parts/language/lang_vi.lua new file mode 100644 index 00000000..d6e2574d --- /dev/null +++ b/parts/language/lang_vi.lua @@ -0,0 +1,1060 @@ +local C=COLOR +return { + loadText={ + loadSFX="Đang tải các hiệu ứng âm thanh", + loadSample="Đang tải các mẫu nhạc cụ", + loadVoice="Đang tải các gói voice", + loadFont="Đang tải phông chữ", + loadModeIcon="Đang tải các biểu tượng", + loadMode="Đang tải các chế độ chơi", + loadOther="Đang tải các tài nguyên khác", + finish="Nhấn một phím bất kỳ để bắt đầu!", + }, + sureQuit="Nhấn thêm một lần nữa để thoát", + sureReset="Nhấn thêm một lần nữa để đặt lại", + sureDelete="Nhấn thêm một lần nữa để xoá", + newDay="Một ngày mới, một khởi đầu mới!", + playedLong="Bạn chơi cũng lâu rồi. Hãy dành chút thời gian nghỉ ngơi đi", + playedTooMuch="Có lẽ bạn chơi quá nhiều rồi! Đặt máy xuống và nghỉ ngơi đi bạn!", + settingWarn="CẨN THẬN - Bạn vừa sửa một cài đặt quan trọng của game!", + settingWarn2="Cài đặt này sẽ có hiệu lực sau khi khởi động lại", + + atkModeName={"Ngẫu nhiên","Huy hiệu","K.O.","Phản công"}, + royale_remain="Còn $1 người chơi", + powerUp={[0]="+000%","+025%","+050%","+075%","+100%"}, + 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 ", + spinNC="-spin", + clear={"Single","Double","Triple","Techrash","Pentacrash","Hexacrash","Heptacrash","Octacrash","Nonacrash","Decacrash","Undecacrash","Dodecacrash","Tridecacrash","Tetradecacrash","Pentadecacrash","Hexadecacrash","Heptadecacrash","Octadecacrash","Nonadecacrash","Ultracrash","Impossicrash"}, + cleared="$1 hàng", + mini="Mini",b2b="B2B ",b3b="B2B2B ", + PC="Perfect Clear",HPC="Hemi-Perfect Clear", + replaying="[Replay]", + tasUsing="[TAS]", + + stage="Chặng $1 hoàn thành!", + great="Tốt lắm!", + awesome="Tuyệt vời!", + almost="Gần xong rồi!", + continue="Cứ tiếp tục!", + maxspeed="TỐC ĐỘ TỐI ĐA!", + speedup="Tăng tốc nào!", + missionFailed="Nhiệm vụ thất bại", + + speedLV="Tốc độ rơi", + piece="Gạch",line="Hàng",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="KOs", + + win="Thắng!", + lose="Thua", + + finish="Hoàn thành", + gamewin="Bạn đã thắng", + gameover="Kết thúc", + + pause="Tạm dừng", + pauseCount="Số lần tạm dừng", + finesse_ap="All Perfect", + finesse_fc="Full Combo", + + page="Trang ", + + cc_fixed="CC không tương thích với trình xáo gạch cố định", + cc_swap="CC không tương thích với chế độ Hold là Chuyển", + ai_prebag="AI không tương thích với trình xáo gạch chứa gạch không phải là tetromino.", + ai_mission="AI không tương thích với nhiệm vụ tuỳ chọn.", + switchSpawnSFX="Vui lòng bật Spawn SFX để chơi!", + needRestart="Khởi động lại để áp dụng mọi thay đổi.", + + loadError_errorMode="'$1' tải lên thất bại: không có chế độ tải lên '$2'", + loadError_read="'$1' tải lên thất bại: đọc thất bại", + loadError_noFile="'$1' tải lên thất bại: không có file", + loadError_other="'$1' tải lên thất bại: $2", + loadError_unknown="'$1' tải lên thất bại: không rõ lý do", + + saveError_duplicate="'$1' lưu thất bại: trùng tên file", + saveError_encode="'$1' lưu thất bại: mã hoá thất bại", + saveError_other="'$1' lưu thất bại: $2", + saveError_unknown="'$1' lưu thất bại: không rõ lý do", + + copyDone="Đã sao chép!", + saveDone="Đã lưu dữ liệu", + exportSuccess="Đã xuất thành công", + importSuccess="Đã nhập thành công", + dataCorrupted="Dữ liệu bị hỏng", + pasteWrongPlace="Bạn đã dán ở nhầm nơi rồi", + noFile="Thiếu tệp", + + nowPlaying="Đang phát:", + + VKTchW="Trọng số chạm", + VKOrgW="Trọng số nút", + VKCurW="Trọng số hiện tại", + + noScore="Không có điểm", + modeLocked="Bị khoá", + unlockHint="Đạt hạng B trở lên trong các chế độ trước đó để mở khóa", + highScore="Điểm cao", + newRecord="Thành tích mới!", + + replayBroken="Không thể tải replay", + + dictNote="==Đã sao chép từ TetroDictionary==", + + + + -- Server's warn/error messages + Techrater={ + internalError="Lỗi nội bộ", + databaseError="Lỗi cơ sở dữ liệu", + invalidFormat="Định dạng không hợp lệ", + invalidArguments="Đối số không hợp lệ", + tooFrequent="Quá thường xuyên", + notAvailable="Không khả dụng", + noPermission="Không có quyền", + roomNotFound="Không tìm thấy phòng", + + -- Controllers + WebSocket={ + invalidConnection="Kết nối không hợp lệ", + invalidAction="Hành động không hợp lệ", + playerNotFound="Không tìm thấy người chơi", + connectionFailed="Kết nối thất bại", + }, + -- Filters + CheckPermission={ + playerNotFound="Không tìm thấy người chơi", + }, + -- Plugins + ConnectionManager={ + playerInvalid="Người chơi không hợp lệ", + playerNotFound="Không tìm thấy người chơi", + connectionReplaced="Connection replaced", + }, + NoticeManager={ + noticeNotFound="Không có thông báo", + }, + PlayerManager={ + invalidCode="Mã không hợp lệ", + invalidEmail="Email không hợp lệ", + playerNotFound="Không tìm thấy người chơi", + invalidEmailPass="Email hoặc người chơi không hợp lệ", + emailExists="Email đã tồn tại", + emailSendError="Lỗi gửi email", + }, + -- Strategies + PlayerRole={ + invalidRole="Vị trí không hợp lệ", + invalidTarget="Mục tiêu không hợp lệ", + }, + PlayerType={ + invalidType="Invalid type", + roomFull="Phòng đã đầy", + }, + RoomJoin={ + wrongPassword="Sai mật khẩu", + }, + }, + + tooFrequent="Yêu cầu vào quá nhiều", + roomPasswordChanged="Mật khẩu của phòng đã thay đổi", + oldVersion="Phiên bản $1 hiện đã ra mắt", + versionNotMatch="Phiên bản không khớp", + notFinished="Sắp ra mắt!", + + noUsername="Vui lòng nhập email của bạn", + wrongEmail="Địa chỉ email không hợp lệ", + wrongCode="Mã xác minh không hợp lệ", + noPassword="Vui lòng nhập mật khẩu của bạn", + diffPassword="Mật khẩu không đúng", + checkEmail="Yêu cầu đăng ký đã được gửi.", + + wsFailed="Kết nối WebSocket đã thất bại: $1", + wsClose="WebSocket đã đóng: $1", + netTimeout="Kết nối đã quá hạn", + serverDown="Ối! Server bị sập rồi", + requestFailed="Yêu cầu thất bại", + + onlinePlayerCount="Trực tuyến: $1", + createRoomSuccessed="Tạo phòng thành công", + playerKicked="$1 đã đá $2 khỏi phòng", + becomeHost="$1 giờ là chủ phòng", + started="Đang chơi", + joinRoom="$1 vừa vào phòng.", + leaveRoom="$1 vừa rời phòng.", + roomRemoved="Phòng đã bị xoá", + ready="Sẵn sàng", + spectating="Đang theo dõi", + + + + keySettingInstruction="Nhấn một phím để gán phím đó\nescape (esc): Huỷ\nbackspace: Xoá", + customBGhelp="Kéo một tấm ảnh vào đây để áp dụng ảnh nền tuỳ chỉnh", + customBGloadFailed="Định dạng ảnh không được hỗ trợ", + + errorMsg="Techmino bị lỗi và cần phải được khởi động lại\nBạn có thể gửi error log để giúp dev sửa game nhanh hơn.", + + modInstruction="Hãy chọn mod bạn muốn.\nMod sẽ cho bạn thay đổi trò chơi, và có thể làm sập trò chơi.\nĐiểm sẽ không được lưu lại khi dùng mod.", + modInfo={ + next="NEXT\nGhi đè số gạch hiển thị ở cột NEXT.", + hold="HOLD\nGhi đè số lượng gạch được giữ ở cột HOLD.", + hideNext="Hidden NEXT\nẨn số lượng gạch ở cột NEXT (Tính từ ô đầu tiên)", + infHold="InfiniHold\nCho phép bạn HOLD vô số lần.", + hideBlock="Hide Current Piece:\nGạch đang rơi trong bảng sẽ bị tàng hình", + hideGhost="No Ghost\nBóng gạch sẽ bị tắt", + hidden="Hide Locked Pieces.\nGạch sẽ bị ẩn sau một khoảng thời gian", + hideBoard="Hide Board\nChe một phần của bảng hay che nguyên bảng", + flipBoard="Flip Board\nXoay bảng hay lật bảng.", + dropDelay="Gravity\nĐiều chỉnh tốc độ rơi của gạch.", + lockDelay="Lock Delay\nGhi đè thời gian chờ khoá của gạch", + waitDelay="Spawn Delay\nGhi đè thời gian gạch xuất hiện", + fallDelay="Line Clear Delay\nGhi đè thời gian xoá hàng", + life="Life\nThay đổi số mạng.", + forceB2B="B2B Only\nKết thúc trò chơi khi cột B2B giảm xuống dưới vạch ban đầu.", + forceFinesse="Finesse Only\nKết thúc trò chơi khi có lỗi di chuyển", + tele="Teleport\nDAS = 0, ARR = 0", + noRotation="No Rotation\nKhông được xoay gạch.", + noMove="No Movement\nKhông được di chuyển trái phải", + customSeq="Randomizer\nGhi đè trình xáo gạch", + pushSpeed="Garbage Speed\nGhi đề tốc độ xuất hiện của hàng rác", + boneBlock="[ ]\nChơi với skin [ ]", + }, + pauseStat={ + "Thời gian chơi:", + "Phím/Xoay/Giữ:", + "Số gạch:", + "Hàng/Đào:", + "Attack/DigAtk:", + "Nhận:", + "Clears:", + "Spins:", + "B2B/B3B/PC/HPC:", + "Lỗi di chuyển:", + }, + radar={"DEF","OFF","ATK","SEND","SPD","DIG"}, + radarData={"D’PM","ADPM","APM","SPM","L’PM","DPM"}, + stat={ + "Số lần bật trò chơi:", + "Số ván đã chơi:", + "Thời gian chơi:", + "Phím/Xoay/Giữ:", + "Gạch/Hàng/Atk.:", + "Recv./Res./Asc.:", + "Đào/Dig Atk.:", + "Eff./Dig Eff.:", + "B2B/B3B:", + "PC/HPC:", + "Lỗi di chuyển/Tỉ lệ:", + }, + aboutTexts={ + "Đây chỉ là một trò chơi xếp gạch *thông thường*. Không, thật đấy, chỉ có vậy thôi", + "Lấy cảm hứng từ C2/IO/JS/WWC/KOS etc.", + "", + "Được xây dựng bằng LÖVE", + "Chúng tôi đánh giá cao mọi đề xuất và báo cáo lỗi do các bạn gửi đến", + "Hãy đảm bảo trò chơi được tải về từ nguồn chính thức", + "vì các nguồn khác có thể không an toàn.", + "Tác giả KHÔNG CHỊU TRÁCH NHIỆM với bất kỳ bản sửa đổi nào.", + FNNS and "/" or "Trò chơi này hoàn toàn miễn phí! Nếu các bạn thích nó, các bạn có thể donate cho chúng tôi!", + FNNS and "/" or "Kiểm tra Zictionary để có thêm thông tin chi tiết", + }, + staff={ + "ĐƯỢC SÁNG TÁC BỞI MrZ", + "E-mail: 1046101471@qq.com", + "", + "Được lập trình, Phát triển và Thiết kế bởi", + "MrZ", + "", + "Âm nhạc được sản xuất với", + "Beepbox", + "FL Studio", + "FL Mobile", + "Logic Pro X", + "", + "[ĐƯỢC XÂY DỰNG BẰNG LÖVE]", + "", + "Lập trình", + "MrZ", + "ParticleG", + "Gompyn", + "Trebor", + "(scdhh)", + "(FinnTenzor)", + "(NOT_A_ROBOT)", + "(user670)", + "", + "GitHub CI, Đóng gói & BackEnd", + "ParticleG", + "Trebor", + "LawrenceLiu", + "Gompyn", + "flaribbit", + "scdhh", + "", + "Thiết kế đồ hoạ, UI & UX", + "MrZ", + "Gnyar", + "C₂₉H₂₅N₃O₅", + "ScF", + "(旋律星萤)", + "(T0722)", + "", + "Minh hoạ", + "Miya", + "Mono", + "Xiaoya", + "葉枭", + "", + "Thiết kế âm nhạc", + "MrZ", + "柒栎流星", + "ERM", + "Trebor", + "C₂₉H₂₅N₃O₅", + "(T0722)", + "(Aether)", + "(Hailey)", + "", + "Hiệu ứng âm thanh & Voice packs", + "Miya", + "Xiaoya", + "Mono", + "MrZ", + "Trebor", + "", + "Dịch thuật", + "User670", + "MattMayuga", + "Mizu", + "Mr.Faq", + "ScF", + "C₂₉H₂₅N₃O₅", + "NOT_A_ROBOT", + "sakurw", + "Airun", + "幽灵3383", + "Shard Nguyễn, Squishy và cộng đồng TVN", + "", + "Performances", + "Electric283", + "Hebomai", + "", + "Xin gửi lời cảm ơn chân thành tới", + "Flyz", + "Big_True", + "NOT_A_ROBOT", + "思竣", + "yuhao7370", + "Farter", + "Teatube", + "蕴空之灵", + "T9972", + "No-Usernam8", + "andrew4043", + "smdbs-smdbs", + "paoho", + "Allustrate", + "Haoran SUN", + "Tianling Lyu", + "huaji2369", + "Lexitik", + "Tourahi Anime", + "[cùng với các thành viên thử nghiệm khác]", + "…và BẠN!", + }, + used=[[ + Các công cụ đã sử dụng: + BeepBox + GoldWave + GFIE + FL Mobile + Các thư viện đã sử dụng: + Cold_Clear [MinusKelvin] + json.lua [rxi] + profile.lua [itraykov] + sha2 [Egor Skriptunoff] + ]], + support="Hỗ trợ người làm game", + WidgetText={ + main={ + offline="Chơi đơn", + qplay="Chơi nhanh: ", + online="Nhiều người chơi", + custom="Chế độ Tự do", + setting="Cài đặt", + stat="Thống kê", + dict="Zictionary", + replays="Replays", + }, + main_simple={ + sprint="Sprint", + marathon="Marathon", + }, + mode={ + mod="Mods (F1)", + start="Bắt đầu!", + }, + mod={ + title="Mods", + reset="Đặt lại (tab)", + unranked="Không tính điểm", + }, + pause={ + setting="Cài đặt (S)", + replay="Replay (P)", + save="Lưu (O)", + resume="Tiếp tục (esc)", + restart="Thử lại (R)", + quit="Thoát (Q)", + tas="TAS (T)", + }, + net_menu={ + league="Tech League", + ffa="FFA", + rooms="Danh sách phòng", + resetPW="Đặt lại mật khẩu", + logout="Đăng xuất", + }, + net_league={ + match="Tìm trận", + }, + net_rooms={ + password="Mật khẩu", + refreshing="Đang làm mới...", + noRoom="Hiện không có phòng nào", + refresh="Làm mới", + new="Phòng mới", + join="Vào phòng", + }, + net_newRoom={ + title="Cấu hình phòng", + roomName="Tên phòng (Mặc định: “[username]'s room”)", + password="Mật khẩu", + description="Mô tả phòng", + + life="Mạng", + pushSpeed="Tốc độ đẩy rác vào", + garbageSpeed="Tốc độ gửi rác", + visible="Chế độ hiện gạch", + freshLimit="Lock Reset tối đa", + + fieldH="Độ cao bảng", + bufferLimit="Giới hạn nhận rác", + heightLimit="Giới hạn độ cao", + + drop="Drop Delay", + lock="Lock Delay", + wait="Entry Delay", + fall="Line Delay", + hang="Death Delay", + hurry="ARE Interruption", + + capacity="Capacity", + create="Create", + + ospin="O-spin", + fineKill="100% Finesse", + b2bKill="Không phá B2B", + lockout="Thua khi Lock Out", + easyFresh="Lock Reset Thường", + deepDrop="Thả Sâu", + bone="Dùng skin []", + + eventSet="Rule Set", + + holdMode="Chế độ Hold", + nextCount="Next", + holdCount="Hold", + infHold="Hold vô tận", + phyHold="Hold tại chỗ", + }, + net_game={ + ready="Sẵn sàng", + spectate="Theo dõi", + cancel="Huỷ sẵn sàng", + }, + setting_game={ + title="Cài đặt trò chơi", + graphic="←Đồ hoạ", + sound="Âm thanh→", + style="Trang trí", + + ctrl="Cài đặt điều khiển", + key="Cài đặt bố cục phím", + touch="Cài đặt cảm ứng", + showVK="Hiển thị nút ảo", + reTime="Start Delay", + RS="Rotation System", + menuPos="Vị trí nút Menu", + sysCursor="Sử dụng con trỏ chuột của hệ thống", + autoPause="Tạm dừng khi nhấn ngoài game", + autoSave="Tự động lưu các thành tích", + simpMode="Chế độ đơn giản", + }, + setting_video={ + title="Cài đặt đồ hoạ", + sound="←Âm thanh", + game="Trò chơi→", + + block="Hiện gạch đang rơi", + smooth="Rơi mượt", + upEdge="Gạch 3D", + bagLine="Vạch tách Bag", + + ghostType="Loại bóng gạch", + ghost="Độ bóng", + center="Tâm xoay", + grid="Lưới", + lineNum="# hàng", + + lockFX="Lock FX", + dropFX="Drop FX", + moveFX="Move FX", + clearFX="Clear FX", + splashFX="Splash FX", + shakeFX="Field Sway", + atkFX="Atk FX", + + frame="Tần suất cập nhật khung hình (%)", + + text="Hiển thị loại xoá hàng", + score="Hiển thị điểm thành phần", + bufferWarn="Hiển thị số hàng rác", + showSpike="Hiển thị Spike", + nextPos="Hiển thị chỗ Spawn", + highCam="Trượt bảng", + warn="Cảnh báo nguy hiểm", + + clickFX="Click FX", + power="Hiện thanh pin", + clean="Vẽ nhanh", + fullscreen="Toàn màn hình", + portrait="Để dọc", + msaa="MSAA level", + + bg_on="Ảnh nền thường", + bg_off="Ảnh nền trống", + bg_custom="Dùng ảnh nền tự chọn", + + blockSatur="Độ đậm gạch", + fieldSatur="Độ đậm bảng", + }, + setting_sound={ + title="Cài đặt âm thanh", + + game="←Trò chơi", + graphic="Đồ hoạ→", + + mainVol="Âm lượng tổng", + bgm="Nhạc nền", + sfx="Hiệu ứng", + stereo="Stereo", + spawn="Spawn SFX", + warn="Cảnh báo SFX", + vib="Rung", + voc="Giọng", + + autoMute="Tắt tiếng nếu nhấn ngoài game", + fine="Âm thanh báo lỗi di chuyển", + sfxPack="Gói SFX", + vocPack="Gói Voice", + apply="Chọn", + }, + setting_control={ + title="Cài đặt Điều khiển", + preview="Xem trước", + + das="DAS",arr="ARR", + dascut="DAS cut", + dropcut="Auto-lock cut", + sddas="Soft Drop DAS",sdarr="Soft Drop ARR", + ihs="Initial Hold", + irs="Initial Rotation", + ims="Initial Movement", + reset="Đặt lại", + }, + setting_key={ + a1="Di chuyển Trái", + a2="Di chuyển Phải", + a3="Xoay Phải", + a4="Xoay Trái", + a5="Xoay 180°", + a6="Thả Mạnh", + a7="Thả Nhẹ", + a8="Giữ", + a9="Chức năng 1", + a10="Chức năng 2", + a11="Trái tức thì", + a12="Phải tức thì", + a13="Thả Nhanh", + a14="Xuống 1", + a15="Xuống 4", + a16="Xuống 10", + a17="Thả Trái", + a18="Thả Phải", + a19="Zangi Trái", + a20="Zangi Phải", + restart="Thử lại", + }, + setting_skin={ + skinSet="Tên Skin", + title="Trang Trí", + skinR="Đặt lại màu", + faceR="Đặt lại hướng", + }, + setting_touch={ + default="Mặc định", + snap="Bám theo khung", + size="Kích cỡ", + shape="Hình dạng", + }, + setting_touchSwitch={ + b1= "Di chuyển Trái:", b2="Di chuyển Phải:", b3="Xoay Phải:", b4="Xoay Trái:", + b5= "Xoay 180°:", b6="Thả Mạnh:", b7="Thả Nhẹ:", b8="Giữ:", + b9= "Chức năng 1:", b10="Chức năng 2:", b11="Trái tức thì:", b12="Phải tức thì:", + b13="Sonic Drop:", b14="Xuống 1:", b15="Xuống 4:", b16="Xuống 10:", + b17="Thả Trái:", b18="Thả Phải:", b19="Zangi Trái:", b20="Zangi Phải:", + + norm="Thường", + pro="Nâng cao", + icon="Icon", + sfx="SFX", + vib="Rung", + alpha="Độ đậm", + + track="Tự động theo", + dodge="Tự động tránh", + }, + customGame={ + title="Chế độ Tự do", + defSeq="Seq. cố định", + noMsn="Không có nhiệm vụ", + + drop="Drop Delay", + lock="Lock Delay", + wait="Entry Delay", + fall="Line Delay", + hang="Death Delay", + hurry="ARE Interruption", + + bg="Ảnh nền", + bgm="Nhạc", + + copy="Chép Bảng+Seq+N.vụ", + paste="Dán Bảng+Seq+N.vụ", + play_clear="Bắt đầu-Clear", + play_puzzle="Bắt đầu-Puzzle", + + reset="Đặt lại (del)", + advance="More (A)", + mod="Mods (F1)", + field="Cài đặt bảng (F)", + sequence="C. đặt Trình xáo gạch (S)", + mission="Cài đặt Nhiệm vụ (M)", + + eventSet="Rule Set", + + holdMode="Chế độ Hold", + nextCount="Next", + holdCount="Hold", + infHold="Hold vô tận", + phyHold="Hold tại chỗ", + + fieldH="Độ cao bảng", + visible="Chế độ hiển thị", + freshLimit="Lock Reset tối đa", + opponent="Đối thủ", + life="Mạng", + pushSpeed="Tốc độ đẩy rác vào", + garbageSpeed="Tốc độ gửi rác", + + bufferLimit="Giới hạn nhận rác", + heightLimit="Giới hạn độ cao", + ospin="O-Spin", + fineKill="100% Finesse", + b2bKill="Không phá B2B", + lockout="Thua khi Lock Out", + easyFresh="Lock Reset Thường", + deepDrop="Thả Sâu", + bone="Dùng skin []", + }, + custom_field={ + title="Chế độ Tự do", + subTitle="Bảng", + + any="Xoá", + smart="Thông minh", + + push="Thêm Hàng (K)", + del="Xoá Hàng (L)", + + demo="Không hiện “×”", + + newPg="Trang mới (N)", + delPg="Xoá trang (M)", + prevPg="Trang trước", + nextPg="Trang tiếp", + }, + custom_sequence={ + title="Chế độ Tự do", + subTitle="Trình xáo gạch", + sequence="Cách xáo", + }, + custom_mission={ + title="Chế độ Tự do", + subTitle="Nhiệm vụ", + + _1="1",_2="2",_3="3",_4="4", + any1="Spin1",any2="Spin2",any3="Spin3",any4="Spin4", + PC="PC", + Z1="Z1",S1="S1",J1="J1",L1="L1",T1="T1",O1="O1",I1="I1", + Z2="Z2",S2="S2",J2="J2",L2="L2",T2="T2",O2="O2",I2="I2", + Z3="Z3",S3="S3",J3="J3",L3="L3",T3="T3",O3="O3",I3="I3", + O4="O4",I4="I4", + mission="Đúng trình tự!", + }, + about={ + staff="Đội ngũ", + his="Thay đổi", + legals="Pháp lý", + }, + dict={ + title="Từ điển Tetro", + }, + stat={ + path="Mở thư mục chứa dữ liệu", + save="Trình quản lý dữ liệu", + }, + music={ + title="Phòng Nhạc", + arrow="→", + now="Đang phát:", + + bgm="BGM", + sound="SFXs", + }, + launchpad={ + title="Phòng SFX", + bgm="BGM", + sfx="SFX", + voc="VOC", + music="BGMs", + label="nhãn", + }, + login={ + title="Đăng Nhập", + ticket="Mã uỷ quyền", + authorize="Mở trang uỷ quyền", + submit="Gửi", + }, + reset_password={ + title="Đặt lại Mật khẩu", + send="Gửi mã", + code="Mã xác nhận", + password="Mật khẩu", + password2="Nhập lại Mật khẩu", + setPW="Đặt mật khẩu", + }, + account={ + title="Tài khoản", + }, + app_15p={ + color="Màu", + invis="Tàng hình", + slide="Lướt", + pathVis="Hiện con trỏ", + revKB="Ngược", + }, + app_schulteG={ + rank="Độ khó", + invis="Tàng hình", + disappear="Biến mất", + tapFX="Tap FX", + }, + app_AtoZ={ + level="Level", + keyboard="Bàn phím", + }, + app_2048={ + invis="Tàng hình", + tapControl="Chạm trong bảng", + + skip="Bỏ qua", + }, + app_ten={ + next="Next", + invis="Tàng hình", + fast="Nhanh", + }, + app_dtw={ + color="Màu", + mode="Chế độ", + bgm="BGM", + arcade="Chế độ đuổi kịp", + }, + app_link={ + invis="Tàng hình", + }, + savedata={ + export="Xuất từ clipboard", + import="Nhập vào clipboard", + unlock="Tiến trình", + data="Thống kê", + setting="Cài đặt", + vk="Bố cục phím ảo", + + couldSave="Lưu qua Cloud (LƯU Ý: ĐANG THỬ NGHIỆM)", + notLogin="[Đăng nhập để lưu]", + upload="Tải lên Cloud", + download="Tải xuống từ Cloud", + }, + }, + modes={ + ['sprint_10l']= {"Sprint", "10L", "Xoá 10 hàng!"}, + ['sprint_20l']= {"Sprint", "20L", "Xoá 20 hàng!"}, + ['sprint_40l']= {"Sprint", "40L", "Xoá 40 hàng!"}, + ['sprint_100l']= {"Sprint", "100L", "Xoá 100 hàng!"}, + ['sprint_400l']= {"Sprint", "400L", "Xoá 400 hàng!"}, + ['sprint_1000l']= {"Sprint", "1,000L", "Xoá 1,000 hàng!"}, + ['sprintPenta']= {"Sprint", "PENTOMINO", "Xoá 40 hàng với 18 pentomino"}, + ['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"}, + ['sprint123']= {"Sprint", "M123", "Xoá 40 hàng chỉ với monomino, domino, và trimino"}, + ['secret_grade']= {"Secret Grade", "", "Xây một đường lỗ theo hình dích dắc!"}, + ['dig_10l']= {"Dig", "10L", "Đào 10 hàng rác càng nhanh càng tốt"}, + ['dig_40l']= {"Dig", "40L", "Đào 40 hàng rác càng nhanh càng tốt!"}, + ['dig_100l']= {"Dig", "100L", "Đào 100 hàng rác càng nhanh càng tốt!"}, + ['dig_400l']= {"Dig", "400L", "Đào 400 hàng rác càng nhanh càng tốt!"}, + ['dig_eff_10l']= {"Dig", "EFFICIENCY 10L", "Đào 10 hàng rác càng ít gạch càng tốt!"}, + ['dig_eff_40l']= {"Dig", "EFFICIENCY 40L", "Đào 40 hàng rác càng ít gạch càng tốt!"}, + ['dig_eff_100l']= {"Dig", "EFFICIENCY 100L","Đào 100 hàng rác càng ít gạch càng tốt!"}, + ['dig_eff_400l']= {"Dig", "EFFICIENCY 400L","Đào 400 hàng rác càng ít gạch càng tốt!"}, + ['dig_quad_10l']= {"Dig", "TECHRASH 10L", "Đào 10 hàng rác nhưng chỉ dùng techrash!"}, + ['drought_n']= {"Drought", "100L", "Không có thanh dài"}, + ['drought_l']= {"Drought+", "100L", "W T F"}, + ['marathon_n']= {"Marathon", "THƯỜNG", "Xoá 200 hàng với tốc độ nhanh dần"}, + ['marathon_h']= {"Marathon", "KHÓ", "Xoá 200 hàng với tốc độ cao"}, + ['solo_e']= {"Battle", "DỄ", "Đánh bại AI!"}, + ['solo_n']= {"Battle", "THƯỜNG", "Đánh bại AI!"}, + ['solo_h']= {"Battle", "KHÓ", "Đánh bại AI!"}, + ['solo_l']= {"Battle", "RẤT KHÓ", "Đánh bại AI!"}, + ['solo_u']= {"Battle", "THÁCH ĐẤU", "Đánh bại AI!"}, + ['techmino49_e']= {"Tech 49", "DỄ", "Cuộc chiến 49 người.\nNgười trụ lại cuối cùng giành chiến thắng"}, + ['techmino49_h']= {"Tech 49", "KHÓ", "Cuộc chiến 49 người.\nNgười trụ lại cuối cùng giành chiến thắng"}, + ['techmino49_u']= {"Tech 49", "THÁCH ĐẤU", "Cuộc chiến 49 người.\nNgười trụ lại cuối cùng giành chiến thắng"}, + ['techmino99_e']= {"Tech 99", "DỄ", "Cuộc chiến 99 người.\nNgười trụ lại cuối cùng giành chiến thắng"}, + ['techmino99_h']= {"Tech 99", "KHÓ", "Cuộc chiến 99 người.\nNgười trụ lại cuối cùng giành chiến thắng"}, + ['techmino99_u']= {"Tech 99", "THÁCH ĐẤU", "Cuộc chiến 99 người.\nNgười trụ lại cuối cùng giành chiến thắng"}, + ['round_e']= {"Turn-Based", "DỄ", "Chơi theo lượt và đánh bại AI!"}, + ['round_n']= {"Turn-Based", "THƯỜNG", "Chơi theo lượt và đánh bại AI!"}, + ['round_h']= {"Turn-Based", "KHÓ", "Chơi theo lượt và đánh bại AI!"}, + ['round_l']= {"Turn-Based", "RẤT KHÓ", "Chơi theo lượt và đánh bại AI!"}, + ['round_u']= {"Turn-Based", "THÁCH ĐẤU", "Chơi theo lượt và đánh bại AI!"}, + ['big_n']= {"Big", "THƯỜNG", "Chơi với một bảng nhỏ hơn!"}, + ['big_h']= {"Big", "KHÓ", "Chơi với một bảng nhỏ hơn!"}, + ['master_n']= {"Master", "THƯỜNG", "Dành cho người mới chơi 20G"}, + ['master_h']= {"Master", "KHÓ", "Dành cho người chơi đã quen 20G"}, + ['master_m']= {"Master", "M21", "Dành cho cao thủ 20G"}, + ['master_final']= {"Master", "FINAL", "Dành cho các pháp sư 20G"}, + ['master_ph']= {"Master", "PHANTASM", "Hả???"}, + ['master_g']= {"Master", "GRADED", "Lấy điểm cao nhất có thể!"}, + ['master_ex']= {"GrandMaster", "EXTRA", "Cũng là lấy điểm cao nhất có thể nhưng mà gắt hơn!"}, + ['master_instinct']={"Master", "INSTINCT", "Lấy điểm cao nhất có thể nhưng với gạch tàng hình!"}, + ['strategy_e']= {"Strategy", "DỄ", "Quyết định nhanh hoặc là thua"}, + ['strategy_h']= {"Strategy", "KHÓ", "Quyết định nhanh hoặc là thua"}, + ['strategy_u']= {"Strategy", "THÁCH ĐẤU", "Quyết định nhanh hoặc là thua"}, + ['strategy_e_plus']={"Strategy", "DỄ+", "Quyết định nhanh và không được Hold!"}, + ['strategy_h_plus']={"Strategy", "KHÓ+", "Quyết định nhanh và không được Hold!"}, + ['strategy_u_plus']={"Strategy", "THÁCH ĐẤU+", "Quyết định nhanh và không được Hold!"}, + ['blind_e']= {"Invisible", "DỄ", "Dành cho người mới"}, + ['blind_n']= {"Invisible", "THƯỜNG", "Dành cho người đã quen"}, + ['blind_h']= {"Invisible", "KHÓ", "Dành cho người đã có kinh nghiệm"}, + ['blind_l']= {"Invisible", "KHÓ+", "Dành cho người chơi chuyên nghiệp"}, + ['blind_u']= {"Invisible", "?", "Bạn đã sẵn sàng chưa?"}, + ['blind_wtf']= {"Invisible", "CLGT?", "Bạn chưa đủ trình cho màn này đâu!"}, + ['classic_e']= {"Classic", "DỄ", "Chế độ cổ điển từ thập niên 80"}, + ['classic_h']= {"Classic", "KHÓ", "Chế độ cổ điển từ thập niên 80 với tốc độ cao hơn"}, + ['classic_l']= {"Classic", "RẤT KHÓ", "Chế độ cổ điển từ thập niên 80 với tốc độ rất cao"}, + ['classic_u']= {"Classic", "THÁCH ĐẤU", "Chế độ cổ điển từ thập niên 80 với tốc độ nhanh như chớp"}, + ['survivor_e']= {"Survival", "DỄ", "Bạn có thể trụ được bao lâu?"}, + ['survivor_n']= {"Survival", "THƯỜNG", "Bạn có thể trụ được bao lâu?"}, + ['survivor_h']= {"Survival", "KHÓ", "Bạn có thể trụ được bao lâu?"}, + ['survivor_l']= {"Survival", "RẤT KHÓ", "Bạn có thể trụ được bao lâu?"}, + ['survivor_u']= {"Survival", "THÁCH ĐẤU", "Bạn có thể trụ được bao lâu?"}, + ['attacker_h']= {"Attacker", "KHÓ", "Luyện tập kỹ năng tấn công!"}, + ['attacker_u']= {"Attacker", "THÁCH ĐẤU", "Luyện tập kỹ năng tấn công!"}, + ['defender_n']= {"Defender", "THƯỜNG", "Luyện tập kỹ năng phòng thủ!"}, + ['defender_l']= {"Defender", "RẤT KHÓ", "Luyện tập kỹ năng phòng thủ!"}, + ['dig_h']= {"Driller", "KHÓ", "Luyện tập kỹ năng đào xuống!"}, + ['dig_u']= {"Driller", "THÁCH ĐẤU", "Luyện tập kỹ năng đào xuống!"}, + ['c4wtrain_n']= {"C4W Training", "THƯỜNG", "Combo vô tận"}, + ['c4wtrain_l']= {"C4W Training", "RẤT KHÓ", "Combo vô tận"}, + ['pctrain_n']= {"PC Training", "THƯỜNG", "Luyện tập Perfect Clear"}, + ['pctrain_l']= {"PC Training", "RẤT KHÓ", "Luyện tập Perfect Clear nhưng khó hơn"}, + ['pc_n']= {"PC Challenge", "THƯỜNG", "Lấy càng nhiều PC càng tốt trong 100 hàng!"}, + ['pc_h']= {"PC Challenge", "KHÓ", "Lấy càng nhiều PC càng tốt trong 100 hàng!"}, + ['pc_l']= {"PC Challenge", "RẤT KHÓ", "Lấy càng nhiều PC càng tốt trong 100 hàng!"}, + ['pc_inf']= {"Inf. PC Challenge", "", "Lấy càng nhiều PC càng tốt"}, + ['tech_n']= {"Tech", "THƯỜNG", "Cố gắng không phá B2B!"}, + ['tech_n_plus']= {"Tech", "THƯỜNG+", "Chỉ được clear Spin hoặc PC"}, + ['tech_h']= {"Tech", "KHÓ", "Cố gắng không phá B2B!"}, + ['tech_h_plus']= {"Tech", "KHÓ+", "Chỉ được clear Spin hoặc PC"}, + ['tech_l']= {"Tech", "RẤT KHÓ", "Cố gắng không phá B2B!"}, + ['tech_l_plus']= {"Tech", "RẤT KHÓ+", "Chỉ được clear Spin hoặc PC"}, + ['tech_finesse']= {"Tech", "HOÀN HẢO", "Không được phép có lỗi di chuyển!"}, + ['tech_finesse_f']= {"Tech", "HOÀN HẢO+", "Không được phép có lỗi di chuyển hoặc loại Xoá hàng thường!"}, + ['tsd_e']= {"TSD Challenge", "DỄ", "Chỉ được clear T-Spin Double!"}, + ['tsd_h']= {"TSD Challenge", "KHÓ", "Chỉ được clear T-Spin Double!"}, + ['tsd_u']= {"TSD Challenge", "THÁCH ĐẤU", "Chỉ được clear T-Spin Double!"}, + ['backfire_n']= {"Backfire", "THƯỜNG", "Sống sót những hàng rác do chính bạn gửi"}, + ['backfire_h']= {"Backfire", "KHÓ", "Sống sót những hàng rác do chính bạn gửi"}, + ['backfire_l']= {"Backfire", "RẤT KHÓ", "Sống sót những hàng rác do chính bạn gửi"}, + ['backfire_u']= {"Backfire", "THÁCH ĐẤU", "Sống sót những hàng rác do chính bạn gửi"}, + ['sprintAtk']= {"Sprint", "100 Attack", "Gửi 100 hàng!"}, + ['sprintEff']= {"Sprint", "Efficiency", "Gửi càng nhiều hàng càng tốt trong 40 hàng"}, + ['zen']= {'Zen', "200", "Xoá 200 hàng nhưng không có thời gian giới hạn"}, + ['ultra']= {'Ultra', "EXTRA", "Lấy càng nhiều điểm càng tốt trong 2 phút"}, + ['infinite']= {"Infinite", "", "Chỉ là một chế độ tự do"}, + ['infinite_dig']= {"Infinite: Dig", "", "Đào, đào nữa, đào mãi"}, + ['marathon_inf']= {"Marathon", "VÔ TẬN", "Marathon vô hạn."}, + + ['custom_clear']= {"Custom", "NORMAL"}, + ['custom_puzzle']= {"Custom", "PUZZLE"}, + }, + getTip={refuseCopy=true, + ":dcgpray:", + "Không thể mở file “Techmino.app” vì người làm game đã bay màu.", + "“Techmino.app” là vi rút đấy. Xoá game đi.", + "“TechminOS”", + "(RUR’U’)R’FR2U’R’U’(RUR’F’)", + "\\jezevec/\\jezevec/\\jezevec/", + "\\osk/\\osk/\\osk/", + "↑↑↓↓←→←→BA", + "$include", + "0next 0hold.", + "1next 0hold", + "1next 1hold!", + "1next 6hold!", + "20G thực chất là một game rule mới đấy!", + "Kỷ lục 40-line Sprint: 14.708s (hiryu)", + "6next 1hold!", + "6next 6hold?!", + "Nếu bạn không chết thì đối thủ thế nào cũng chết thôi - Onda Aka", + "ALL SPIN!", + "Am G F G", + "B2B2B???", + "B2B2B2B không có thật.", + "Back-to-Back Techrash, 10 Combo, PC!", + "Nhớ dốc hết sức cho ngày hôm nay nha bạn!", + "Bridge clear sắp ra mắt!", + "Bạn có thể chinh phục game xếp gạch này không?", + "Con tim này luôn hướng về 3M.", + "Mọi thay đổi của game (tiếng Anh) sẽ được ghi lại trên Discord.", + "Color clear sắp ra mắt!", + "Giảm DAS và ARR sẽ giúp bạn chơi nhanh hơn nhưng khó điều khiển hơn.", + "Tao vừa mới thấy Back-to-Back-to-Back hả?", + "B2B2B2B tồn tại hả?", + "Đừng để những thứ nhỏ nhặt làm bạn mất hứng!", + "Đây không phải là lỗi, đây là tính năng!", + "Techmino rotation system rất đẹp trai!", + "Excellent, but let’s go better next time…", + "Đừng quên xem qua phần cài đặt!", + "Nếu bạn thấy có vấn đề gì, hãy lên trang GitHub báo lại cho chúng tôi!", + "Game xếp gạch nhưng có thêm chế độ FFA!", + "git commit", + "git push -f", + "Bạn muốn đóng góp ý tưởng? Hãy vào Discord của chúng tôi!", + "Bạn có biết gạch xoay thì nó biến thành gì không?", + "Khuyến khích đeo tai nghe để có trải nghiệm tốt hơn", + "Hello world!", + "Chỉ có 2 loại trimino là I3 và L3.", + " if a==true", + "Việc tăng tần số khung hình sẽ mang trải nghiệm tốt hơn cho bạn", + "Initial [insert action] system có thể cứu bạn đấy.", + "B2B2B2B là gì? Ăn được không?", + "Nó vừa load cutscene, vừa load game đấy!", + "Bạn có thể xoá 40 hàng mà không cần dùng nút trái/phải.", + "Bạn có thể xoá 40 hàng mà không cần dùng nút xoay.", + "Hãy tham gia Discord của chúng tôi!", + "l-=-1", + "NỔI LỬA LÊN EM", + "Việc giảm tần số khung hình sẽ mang trải nghiệm tệ hơn cho bạn", + "LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF", + "Lua No.1", + "Mix clear sắp ra mắt!", + "Hầu hết các biểu tượng của các nút được vẽ tay vào trong bảng Unicode Private Use Area.", + "Hầu hết nhạc trong game được tạo bằng Beepbox.", + "Nghe nhạc làm bạn phân tâm? Tắt nó đi.", + "Nếu mà Chế độ đơn giản được bật thì bạn sẽ không thấy điều đặc biệt nào đâu!", + "O-Spin Triple!", + "Thương cho tấm thân cơ hàn, ngậm ngùi lặng nhìn con đò sang ngang", + "Chơi game một tay chưa?", + "Có công mài sắt, có ngày nên kim!", + "Được tạo bởi LÖVE", + "Được tạo bởi Un..LÖVE", + "pps-0.01", + "Dit me VNPT", + "Một số yêu cầu để đạt được rank X là rất khó, kể cả đối với những người giỏi nhất.", + "Bạn sẽ sớm được chơi với mọi người trên thế giới thôi.", + "Split clear sắp ra mắt!", + "sudo rm -rf /*", + "Techmino là sự kết hợp giữa “technique” và “tetromino”.", + "Hình như mình nghiện Techmino rồi!", + "Techmino on Nspire-CX: vâng, nó tồn tại", + "TetroDictionary (không phải tiếng Việt) đã ra mắt.", + "Những cái tên xuất hiện ở phần nền trong trang Đội Ngũ là danh sách các nhà tài trợ của chúng tôi.", + "Nhạc game này đã có mặt trên Soundcloud!", + "The stacker future is yours in Techmino!", + "Bạn có biết: Có một số chế độ đã bị ẩn khỏi map không?", + "Có tất cả 18 miếng pentomino khác nhau.", + "Có tất cả 7 miếng tetromino khác nhau.", + "Chế độ nhiều người đã ra mắt rồi, hãy thử nó đi!", + "Thử sử dụng nhiều ô Hold đi!", + "Thử dùng 2 nút xoay đi. Dùng cả 3 thì càng tốt.", + "Cảnh báo: Cấu trúc dữ liệu và Giải thuật", + "20 PC thì sao?", + "Thế còn 23 PC trong 100 hàng?", + "26 TSD có nổi không thế?", + "Game rác v*i c*t", + " while (false)", + "Bạn là Nhất!", + "Bạn có thể giúp chúng tôi viết BGMs và SFXs!", + "Bạn có thể cắm bàn phím vào điện thoại hoặc máy tính bảng (đối với iOS thì không).", + "Bạn có thể cài đặt bố cục phím trong phần cài đặt!", + "Bạn có thể mở thư mục chứa dữ liệu từ trang Thống kê.", + "Bạn có thể thực hiện Spin với tất cả cả miếng gạch trong game này.", + "Bạn có thể đặt hướng xuất hiện cho từng miếng gạch.", + "ZS JL T O I", + {C.C,"Also try 15puzzle!"}, + {C.C,"Also try Ballance!"}, + {C.C,"Also try Minecraft!"}, + {C.C,"Also try Minesweeper!"}, + {C.C,"Also try Orzmic!"}, + {C.C,"Also try osu!"}, + {C.C,"Also try Phigros!"}, + {C.C,"Also try Puyo Puyo!"}, + {C.C,"Also try Rubik’s cube!"}, + {C.C,"Also try Terraria!"}, + {C.C,"Also try Touhou Project!"}, + {C.C,"Also try VVVVVV!"}, + {C.C,"Also try World of goo!"}, + {C.C,"Also try Zuma!"}, + {C.H,"MÓM RỒI ANH EM!!!!!"}, + {C.lP,"Secret number: 626"}, + {C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"}, + {C.lY,"MÁT QUÁ!!"}, + {C.N,"Lua",C.Z," No.1"}, + {C.P,"T-spin!"}, + {C.R,"DMCA là gì?"}, + {C.R,"“Intellectual property law”"}, + {C.R,"DD",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z," Cannon"}, + {C.R,"DT",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z," Cannon"}, + {C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR ",C.P,"LLL ",C.C,"FFF ",C.Y,"RfR ",C.Y,"RRf ",C.Y,"rFF"}, + {C.Y,"O-Spin Triple!"}, + {C.Z,"What? ",C.lC,"Xspin?"}, + }, + pumpkin="Tôi là một quả bí ngô", +} diff --git a/parts/scenes/lang.lua b/parts/scenes/lang.lua index 98de8107..9d4a9bea 100644 --- a/parts/scenes/lang.lua +++ b/parts/scenes/lang.lua @@ -8,13 +8,15 @@ local langList={ id="Bahasa Indonesia", ja="日本語", symbol="?????", - zh_code="Code(zh);" + zh_code="Code(zh);", + vi="Tiếng Việt", } local languages={ "Language Langue Lingua", "语言 言語 언어", "Idioma Línguas Sprache", "Язык Γλώσσα Bahasa", + "Ngôn ngữ", } local curLang=1 @@ -57,7 +59,7 @@ scene.widgetList={ WIDGET.newButton{x=640,y=210,w=330,h=100,font=40, fText=langList.pt, color='A',sound='click',code=function()_setLang('pt') end}, WIDGET.newButton{x=640,y=330,w=330,h=100,font=40, fText=langList.symbol, color='G',sound='click',code=function()_setLang('symbol') end}, WIDGET.newButton{x=640,y=450,w=330,h=100,font=40, fText=langList.ja, color='J',sound='click',code=function()_setLang('ja') end}, - WIDGET.newKey {x=640,y=570,w=330,h=100,font=40, fText='', color='L'}, + WIDGET.newButton{x=640,y=570,w=330,h=100,font=40, fText=langList.vi, color='L',sound='click',code=function()_setLang('vi') end}, WIDGET.newButton{x=1000,y=210,w=330,h=100,font=40,fText=langList.zh, color='C',sound='click',code=function()_setLang('zh') end}, WIDGET.newButton{x=1000,y=330,w=330,h=100,font=40,fText=langList.zh_trad, color='S',sound='click',code=function()_setLang('zh_trad') end},