diff --git a/index.html b/index.html index 4abb5c44..a7663b3c 100644 --- a/index.html +++ b/index.html @@ -6,6 +6,8 @@ + + @@ -332,7 +334,7 @@
@@ -353,7 +355,7 @@
- +
diff --git a/language-list.js b/language-list.js new file mode 100644 index 00000000..11179d8f --- /dev/null +++ b/language-list.js @@ -0,0 +1,23 @@ +/**/ +var languageList = [ + { + name:"中文(简体)",i18n:"zh",searchlist:["ja","en"], + guideURL:"http://pad.skyozora.com/pets/$1" + }, + { + name:"中文(繁體)",i18n:"zh-TW",searchlist:["ja","en"], + guideURL:"http://pad.skyozora.com/pets/$1" + }, + { + name:"English",i18n:"en",searchlist:["en","ja"], + guideURL:"http://www.puzzledragonx.com/en/awokenskill.asp?n=$1" + }, + { + name:"日本語",i18n:"ja",searchlist:["ja"], + guideURL:"https://pd.appbank.net/m$1" //or https://altema.jp/pazudora/monster/$1 + }, + { + name:"한국어",i18n:"ko",searchlist:["ko","ja"], + guideURL:"http://www.thisisgame.com/pad/info/monster/detail.php?code=$1" + }, +]; \ No newline at end of file diff --git a/languages/en.css b/languages/en.css new file mode 100644 index 00000000..ce2e34a4 --- /dev/null +++ b/languages/en.css @@ -0,0 +1,128 @@ +@charset "utf-8"; +.delay .monster::before{ + content: "Prevent\A Delay"; + font-size: 22px; +} +.monster .level.max::before{ + content: "Lv.Max"; +} +.monster .plus .hp::before, +.monster .plus .atk::before, +.monster .plus .rcv::before, +.monster .plus ._297::before{ + content: "+"; +} +.monster .level::before{ + content: "Lv."; +} +.formation-A-bigbox::after{ + content: "Team\A A"; +} +.formation-B-bigbox::before{ + content: "Team\A B"; +} +.formation-A-box .formation-assist .member::after{ + content: "▼Assist"; +} +.formation-B-box .formation-assist .member::before{ + content: "▲Assist"; +} +.edit-box .edit-box-title::before{ + content: "Edit Member"; +} +.edit-box .edit-box-title.edit-box-title-assist::before{ + content: "Edit Assist"; +} +.edit-box .search-box::before{ + content: "▼Monster ID"; +} +.monsterinfo-box .monster-id::before{ + content: "No."; +} +.edit-box .setting-box .row-mon-level::before{ + content: "▼Monster Level"; +} +.m-level-btn-max::before{ + content: "Max Lv"; +} +.edit-box .setting-box .row-mon-awoken::before{ + content: "▼Monster Awoken"; +} +.edit-box .setting-box .row-mon-plus::before{ + content: "▼Monster Plus"; +} +.m-plus-hp-li::before{ + content: "HP"; +} +.m-plus-atk-li::before{ + content: "ATK"; +} +.m-plus-rcv-li::before{ + content: "RCV"; +} +.m-plus-hp-btn-99::before, +.m-plus-atk-btn-99::before, +.m-plus-rcv-btn-99::before, +.m-plus-btn-297::before{ + content: "+"; +} +.edit-box .setting-box .row-mon-latent::before{ + content: "▼Latent Awoken"; +} +.edit-box .button-box .button-null::after{ + content: "Leave a blank"; +} +.edit-box .button-box .button-delay::after{ + content: "Prevent Delay"; +} +.edit-box .button-box .button-cancel::after{ + content: "Cancel"; +} +.edit-box .button-box .button-done::after{ + content: "Done"; +} +.edit-box .button-box .button-null, +.edit-box .button-box .button-delay, +.edit-box .button-box .button-cancel, +.edit-box .button-box .button-done{ + font-size: 15px; +} +.edit-box .button-box .button-done.cant-assist::after{ + content: "Can't be Assist"; +} +.type-name-4::after{ + content: "Dragon"; +} +.type-name-5::after{ + content: "God"; +} +.type-name-7::after{ + content: "Devil"; +} +.type-name-8::after{ + content: "Machine"; +} +.type-name-1::after{ + content: "Balanced"; +} +.type-name-6::after{ + content: "Attacker"; +} +.type-name-2::after{ + content: "Physical"; +} +.type-name-3::after{ + content: "Healer"; +} +.type-name-0::after{ + content: "Evo Material"; +} +.type-name-12::after{ + content: "Awaken"; +} +.type-name-14::after{ + content: "Enhance Material"; +} +.type-name-15::after{ + content: "Redeemable"; +} \ No newline at end of file diff --git a/languages/en.js b/languages/en.js new file mode 100644 index 00000000..7616aac4 --- /dev/null +++ b/languages/en.js @@ -0,0 +1,4 @@ +var txtTitle = document.querySelector(".title-box .title"); +var txtDetail = document.querySelector(".detail-box .detail"); +txtTitle.placeholder = "Input Formation Title"; +txtDetail.placeholder = "Input Detail"; \ No newline at end of file diff --git a/languages/ja.css b/languages/ja.css new file mode 100644 index 00000000..124255a2 --- /dev/null +++ b/languages/ja.css @@ -0,0 +1,121 @@ +@charset "utf-8"; +.delay .monster::before{ + content: "遅 延\A対 策"; +} +.monster .level.max::before{ + content: "Lv.最大"; +} +.monster .plus .hp::before, +.monster .plus .atk::before, +.monster .plus .rcv::before, +.monster .plus ._297::before{ + content: "+"; +} +.monster .level::before{ + content: "Lv."; +} +.formation-A-bigbox::after{ + content: "チーム\A A"; +} +.formation-B-bigbox::before{ + content: "チーム\A B"; +} +.formation-A-box .formation-assist .member::after{ + content: "▼継承"; +} +.formation-B-box .formation-assist .member::before{ + content: "▲継承"; +} +.edit-box .edit-box-title::before{ + content: "変更メンバー"; +} +.edit-box .edit-box-title.edit-box-title-assist::before{ + content: "変更継承"; +} +.edit-box .search-box::before{ + content: "▼モンスターID"; +} +.monsterinfo-box .monster-id::before{ + content: "No."; +} +.edit-box .setting-box .row-mon-level::before{ + content: "▼モンスターレベル"; +} +.m-level-btn-max::before{ + content: "最高Lv"; +} +.edit-box .setting-box .row-mon-awoken::before{ + content: "▼モンスター覚醒"; +} +.edit-box .setting-box .row-mon-plus::before{ + content: "▼モンスタープラス"; +} +.m-plus-hp-li::before{ + content: "HP"; +} +.m-plus-atk-li::before{ + content: "攻撃"; +} +.m-plus-rcv-li::before{ + content: "回復"; +} +.m-plus-hp-btn-99::before, +.m-plus-atk-btn-99::before, +.m-plus-rcv-btn-99::before, +.m-plus-btn-297::before{ + content: "+"; +} +.edit-box .setting-box .row-mon-latent::before{ + content: "▼モンスター潜在覚醒"; +} +.edit-box .button-box .button-null::after{ + content: "空白のままに"; +} +.edit-box .button-box .button-delay::after{ + content: "遅延対策"; +} +.edit-box .button-box .button-cancel::after{ + content: "キャンセル"; +} +.edit-box .button-box .button-done::after{ + content: "確認する"; +} +.edit-box .button-box .button-done.cant-assist::after{ + content: "継承できない"; +} +.type-name-4::after{ + content: "ドラゴン"; +} +.type-name-5::after{ + content: "神"; +} +.type-name-7::after{ + content: "悪魔"; +} +.type-name-8::after{ + content: "マシン"; +} +.type-name-1::after{ + content: "バランス"; +} +.type-name-6::after{ + content: "攻撃"; +} +.type-name-2::after{ + content: "体力"; +} +.type-name-3::after{ + content: "回復"; +} +.type-name-0::after{ + content: "進化用"; +} +.type-name-12::after{ + content: "能力覚醒用"; +} +.type-name-14::after{ + content: "強化合成用"; +} +.type-name-15::after{ + content: "売却用"; +} \ No newline at end of file diff --git a/languages/ja.js b/languages/ja.js new file mode 100644 index 00000000..85c46a2d --- /dev/null +++ b/languages/ja.js @@ -0,0 +1,4 @@ +var txtTitle = document.querySelector(".title-box .title"); +var txtDetail = document.querySelector(".detail-box .detail"); +txtTitle.placeholder = "入力フォーメーションのタイトル"; +txtDetail.placeholder = "入力詳細"; \ No newline at end of file diff --git a/languages/ko.css b/languages/ko.css new file mode 100644 index 00000000..1ebadb23 --- /dev/null +++ b/languages/ko.css @@ -0,0 +1,121 @@ +@charset "utf-8"; +.delay .monster::before{ + content: "지 연\A방 지"; +} +.monster .level.max::before{ + content: "Lv.최대"; +} +.monster .plus .hp::before, +.monster .plus .atk::before, +.monster .plus .rcv::before, +.monster .plus ._297::before{ + content: "+"; +} +.monster .level::before{ + content: "Lv."; +} +.formation-A-bigbox::after{ + content: "팀\A A"; +} +.formation-B-bigbox::before{ + content: "팀\A B"; +} +.formation-A-box .formation-assist .member::after{ + content: "▼돕다"; +} +.formation-B-box .formation-assist .member::before{ + content: "▲돕다"; +} +.edit-box .edit-box-title::before{ + content: "회원 수정"; +} +.edit-box .edit-box-title.edit-box-title-assist::before{ + content: "보조 수정"; +} +.edit-box .search-box::before{ + content: "▼몬스터 ID"; +} +.monsterinfo-box .monster-id::before{ + content: "No."; +} +.edit-box .setting-box .row-mon-level::before{ + content: "▼몬스터 레벨"; +} +.m-level-btn-max::before{ + content: "최고Lv"; +} +.edit-box .setting-box .row-mon-awoken::before{ + content: "▼몬스터 각성"; +} +.edit-box .setting-box .row-mon-plus::before{ + content: "▼몬스터 플러스"; +} +.m-plus-hp-li::before{ + content: "HP"; +} +.m-plus-atk-li::before{ + content: "공격"; +} +.m-plus-rcv-li::before{ + content: "회복"; +} +.m-plus-hp-btn-99::before, +.m-plus-atk-btn-99::before, +.m-plus-rcv-btn-99::before, +.m-plus-btn-297::before{ + content: "+"; +} +.edit-box .setting-box .row-mon-latent::before{ + content: "▼몬스터 숨어있는"; +} +.edit-box .button-box .button-null::after{ + content: "비워 둡니다"; +} +.edit-box .button-box .button-delay::after{ + content: "지연 방지"; +} +.edit-box .button-box .button-cancel::after{ + content: "편집 취소"; +} +.edit-box .button-box .button-done::after{ + content: "수정 확인"; +} +.edit-box .button-box .button-done.cant-assist::after{ + content: "협조 할 수 없음"; +} +.type-name-4::after{ + content: "드래곤"; +} +.type-name-5::after{ + content: "신"; +} +.type-name-7::after{ + content: "악마"; +} +.type-name-8::after{ + content: "머신"; +} +.type-name-1::after{ + content: "밸런스"; +} +.type-name-6::after{ + content: "공격"; +} +.type-name-2::after{ + content: "체력"; +} +.type-name-3::after{ + content: "회복"; +} +.type-name-0::after{ + content: "진화용"; +} +.type-name-12::after{ + content: "능력각성"; +} +.type-name-14::after{ + content: "강화합성용"; +} +.type-name-15::after{ + content: "매각용"; +} diff --git a/languages/ko.js b/languages/ko.js new file mode 100644 index 00000000..049fee08 --- /dev/null +++ b/languages/ko.js @@ -0,0 +1,4 @@ +var txtTitle = document.querySelector(".title-box .title"); +var txtDetail = document.querySelector(".detail-box .detail"); +txtTitle.placeholder = "편대 칭호 입력"; +txtDetail.placeholder = "입력 내용"; \ No newline at end of file diff --git a/languages/zh-TW.css b/languages/zh-TW.css new file mode 100644 index 00000000..6d11619a --- /dev/null +++ b/languages/zh-TW.css @@ -0,0 +1,121 @@ +@charset "utf-8"; +.delay .monster::before{ + content: "應 對\A威 嚇"; +} +.monster .level.max::before{ + content: "Lv.最大"; +} +.monster .plus .hp::before, +.monster .plus .atk::before, +.monster .plus .rcv::before, +.monster .plus ._297::before{ + content: "+"; +} +.monster .level::before{ + content: "Lv."; +} +.formation-A-bigbox::after{ + content: "隊伍\A A"; +} +.formation-B-bigbox::before{ + content: "隊伍\A B"; +} +.formation-A-box .formation-assist .member::after{ + content: "▼輔助"; +} +.formation-B-box .formation-assist .member::before{ + content: "▲輔助"; +} +.edit-box .edit-box-title::before{ + content: "修改隊員"; +} +.edit-box .edit-box-title.edit-box-title-assist::before{ + content: "修改輔助"; +} +.edit-box .search-box::before{ + content: "▼怪物ID"; +} +.monsterinfo-box .monster-id::before{ + content: "No."; +} +.edit-box .setting-box .row-mon-level::before{ + content: "▼怪物等級"; +} +.m-level-btn-max::before{ + content: "最高Lv"; +} +.edit-box .setting-box .row-mon-awoken::before{ + content: "▼怪物覺醒"; +} +.edit-box .setting-box .row-mon-plus::before{ + content: "▼怪物加值"; +} +.m-plus-hp-li::before{ + content: "HP"; +} +.m-plus-atk-li::before{ + content: "攻擊"; +} +.m-plus-rcv-li::before{ + content: "回復"; +} +.m-plus-hp-btn-99::before, +.m-plus-atk-btn-99::before, +.m-plus-rcv-btn-99::before, +.m-plus-btn-297::before{ + content: "+"; +} +.edit-box .setting-box .row-mon-latent::before{ + content: "▼潛在覺醒"; +} +.edit-box .button-box .button-null::after{ + content: "留空格子"; +} +.edit-box .button-box .button-delay::after{ + content: "應對威嚇"; +} +.edit-box .button-box .button-cancel::after{ + content: "取消修改"; +} +.edit-box .button-box .button-done::after{ + content: "確認修改"; +} +.edit-box .button-box .button-done.cant-assist::after{ + content: "不能輔助"; +} +.type-name-4::after{ + content: "龍"; +} +.type-name-5::after{ + content: "神"; +} +.type-name-7::after{ + content: "惡魔"; +} +.type-name-8::after{ + content: "機械"; +} +.type-name-1::after{ + content: "平衡"; +} +.type-name-6::after{ + content: "攻撃"; +} +.type-name-2::after{ + content: "體力"; +} +.type-name-3::after{ + content: "回復"; +} +.type-name-0::after{ + content: "進化用"; +} +.type-name-12::after{ + content: "能力覺醒用"; +} +.type-name-14::after{ + content: "強化合成用"; +} +.type-name-15::after{ + content: "販賣用"; +} diff --git a/languages/zh-TW.js b/languages/zh-TW.js new file mode 100644 index 00000000..13f1073b --- /dev/null +++ b/languages/zh-TW.js @@ -0,0 +1,4 @@ +var txtTitle = document.querySelector(".title-box .title"); +var txtDetail = document.querySelector(".detail-box .detail"); +txtTitle.placeholder = "輸入陣型標題"; +txtDetail.placeholder = "輸入說明"; \ No newline at end of file diff --git a/languages/zh.css b/languages/zh.css new file mode 100644 index 00000000..ce1436c9 --- /dev/null +++ b/languages/zh.css @@ -0,0 +1,121 @@ +@charset "utf-8"; +.delay .monster::before{ + content: "应 对\A威 吓"; +} +.monster .level.max::before{ + content: "Lv.最大"; +} +.monster .plus .hp::before, +.monster .plus .atk::before, +.monster .plus .rcv::before, +.monster .plus ._297::before{ + content: "+"; +} +.monster .level::before{ + content: "Lv."; +} +.formation-A-bigbox::after{ + content: "队伍\A A"; +} +.formation-B-bigbox::before{ + content: "队伍\A B"; +} +.formation-A-box .formation-assist .member::after{ + content: "▼辅助"; +} +.formation-B-box .formation-assist .member::before{ + content: "▲辅助"; +} +.edit-box .edit-box-title::before{ + content: "修改队员"; +} +.edit-box .edit-box-title.edit-box-title-assist::before{ + content: "修改辅助"; +} +.edit-box .search-box::before{ + content: "▼怪物ID"; +} +.monsterinfo-box .monster-id::before{ + content: "No."; +} +.edit-box .setting-box .row-mon-level::before{ + content: "▼怪物等级"; +} +.m-level-btn-max::before{ + content: "最高Lv"; +} +.edit-box .setting-box .row-mon-awoken::before{ + content: "▼怪物觉醒"; +} +.edit-box .setting-box .row-mon-plus::before{ + content: "▼怪物加值"; +} +.m-plus-hp-li::before{ + content: "HP"; +} +.m-plus-atk-li::before{ + content: "攻击"; +} +.m-plus-rcv-li::before{ + content: "回复"; +} +.m-plus-hp-btn-99::before, +.m-plus-atk-btn-99::before, +.m-plus-rcv-btn-99::before, +.m-plus-btn-297::before{ + content: "+"; +} +.edit-box .setting-box .row-mon-latent::before{ + content: "▼潜在觉醒"; +} +.edit-box .button-box .button-null::after{ + content: "留空格子"; +} +.edit-box .button-box .button-delay::after{ + content: "应对威吓"; +} +.edit-box .button-box .button-cancel::after{ + content: "取消修改"; +} +.edit-box .button-box .button-done::after{ + content: "确认修改"; +} +.edit-box .button-box .button-done.cant-assist::after{ + content: "不能辅助"; +} +.type-name-4::after{ + content: "龍"; +} +.type-name-5::after{ + content: "神"; +} +.type-name-7::after{ + content: "惡魔"; +} +.type-name-8::after{ + content: "机械"; +} +.type-name-1::after{ + content: "平衡"; +} +.type-name-6::after{ + content: "攻撃"; +} +.type-name-2::after{ + content: "体力"; +} +.type-name-3::after{ + content: "回復"; +} +.type-name-0::after{ + content: "進化用"; +} +.type-name-12::after{ + content: "能力覺醒用"; +} +.type-name-14::after{ + content: "強化合成用"; +} +.type-name-15::after{ + content: "販賣用"; +} \ No newline at end of file diff --git a/languages/zh.js b/languages/zh.js new file mode 100644 index 00000000..5f282702 --- /dev/null +++ b/languages/zh.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/script.js b/script.js index 18c522b0..bf351569 100644 --- a/script.js +++ b/script.js @@ -1,4 +1,5 @@ var ms = null; +var language = null; var memberTeamObj = function(){ return {id:0,level:0,awoken:0,plus:[0,0,0],latent:[]}; } @@ -8,20 +9,18 @@ var memberAssistObj = function(){ var teamObj = function(){ return [ [ - new memberTeamObj(), - new memberTeamObj(), - new memberTeamObj(), - new memberTeamObj(), - new memberTeamObj(), - new memberTeamObj(), + {id:0}, + {id:0}, + {id:0}, + {id:0}, + {id:0}, ], [ - new memberAssistObj(), - new memberAssistObj(), - new memberAssistObj(), - new memberAssistObj(), - new memberAssistObj(), - new memberAssistObj(), + {id:0}, + {id:0}, + {id:0}, + {id:0}, + {id:0}, ], ]; } @@ -35,6 +34,17 @@ var formation = { }; window.onload = function() { + var language_i18n = getQueryString("lang"); //获取参数指定的语言 + var browser_i18n = (navigator.language||navigator.userLanguage); //获取浏览器语言 + var hasLanguage = languageList.filter(function(l){ + if (language_i18n) //如果已指定就用指定的语言 + return language_i18n.indexOf(l.i18n)>=0; + else + return browser_i18n.indexOf(l.i18n)>=0; + }); + language = hasLanguage.length?hasLanguage[hasLanguage.length-1]:languageList[0]; + document.head.querySelector("#language-css").href = "languages/"+language.i18n+".css"; + GM_xmlhttpRequest({ method: "GET", url:"monsters-info/mon.json", @@ -80,15 +90,10 @@ window.onpopstate = function() function creatNewUrl(){ if (!!(window.history && history.pushState)) { // 支持History API - history.pushState(null, null, '?data=' + encodeURIComponent(JSON.stringify(formation))); + var language_i18n = getQueryString("lang"); //获取参数指定的语言 + history.pushState(null, null, '?' + (language_i18n?'lang=' + language_i18n + '&':'') + 'data=' + encodeURIComponent(JSON.stringify(formation))); } } -//获取URL参数 -function getQueryString(name) { - var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); - var r = window.location.search.substr(1).match(reg); - if (r != null) return decodeURIComponent(r[2]); return null; -} //初始化 function initialize() { @@ -96,7 +101,11 @@ function initialize() ms.forEach(function(m){ var opt = monstersList.appendChild(document.createElement("option")); opt.value = m.id; - opt.label = m.id + " | " + m.name["ja"] + " | " + m.name["en"] + " | " + m.name["ko"]; + opt.label = m.id + " - " + language.searchlist.map(function(lc){ //取出每种语言 + return m.name[lc]; + }).filter(function(ln){ //去掉空值 + return ln.length>0; + }).join(" | "); }); //标题和介绍文本框 @@ -282,14 +291,21 @@ function initialize() creatNewUrl(); editBox.hide(); } + + /*添对应语言执行的JS*/ + var languageJS = document.head.appendChild(document.createElement("script")); + languageJS.id = "language-js"; + languageJS.type = "text/javascript"; + languageJS.src = "languages/"+language.i18n+".js"; } -function usedHole(latent) //计算用了多少潜觉格子 +//计算用了多少潜觉格子 +function usedHole(latent) { return latent.reduce(function(previous,current){ return previous + (current>= 12?2:1); },0); } - +//改变一个怪物头像 function changeid(mon,monDom,latentDom) { var md = ms[mon.id]; //怪物固定数据 @@ -314,8 +330,8 @@ function changeid(mon,monDom,latentDom) monDom.classList.add("pet-cards-index-y-" + parseInt(idxInPage / 10)); //添加Y方向序号 monDom.querySelector(".property").className = "property property-" + md.ppt[0]; //主属性 monDom.querySelector(".subproperty").className = "subproperty subproperty-" + md.ppt[1]; //副属性 - monDom.title = "No." + mon.id + " " + md.name["ja"]; - monDom.href = "http://pad.skyozora.com/pets/" + mon.id; + monDom.title = "No." + mon.id + " " + md.name[language.searchlist[0]] || md.name["ja"]; + monDom.href = mon.id.toString().replace(/^(\d+)$/ig,language.guideURL); } if (mon.level>0) //如果提供了等级 { @@ -472,7 +488,7 @@ function editBoxChangeMonId(id) var mRare = monInfoBox.querySelector(".monster-rare"); mRare.className = "monster-rare rare-" + md.rare; var mName = monInfoBox.querySelector(".monster-name"); - mName.innerHTML = md.name["ja"]; + mName.innerHTML = md.name[language.searchlist[0]] || md.name["ja"]; var mType = monInfoBox.querySelectorAll(".monster-type li"); for (var ti=0;ti