diff --git a/main.js b/main.js index 9d170bae..8c96a232 100644 --- a/main.js +++ b/main.js @@ -223,7 +223,7 @@ const createMainWin = () => { ipcMain.on("get-file-data", function (event) { if (fs.existsSync(path.join(dirPath, "log.json"))) { const _data = JSON.parse( - fs.readFileSync(path.join(dirPath, "log.json"), "utf8") || "{}" + fs.readFileSync(path.join(dirPath, "log.json")) || "{}" ); if (_data && _data.filePath) { filePath = _data.filePath; diff --git a/package.json b/package.json index 4570a0cc..c96510c1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "koodo-reader", "main": "main.js", - "version": "1.4.4", + "version": "1.4.5", "description": "A cross-platform ebook reader", "author": { "name": "App by Troye", diff --git a/public/lib/kookit/kookit.umd.js b/public/lib/kookit/kookit.umd.js index 8d1cb50f..01a643a5 100644 --- a/public/lib/kookit/kookit.umd.js +++ b/public/lib/kookit/kookit.umd.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Kookit={})}(this,function(t){"use strict";function c(t,s,a,l){return new(a=a||Promise)(function(i,e){function r(t){try{o(l.next(t))}catch(t){e(t)}}function n(t){try{o(l.throw(t))}catch(t){e(t)}}function o(t){var e;t.done?i(t.value):((e=t.value)instanceof a?e:new a(function(t){t(e)})).then(r,n)}o((l=l.apply(t,s||[])).next())})}class a{static getKookitConfig(t){return(JSON.parse(localStorage.getItem("kookitConfig"))||{})[t]}static setKookitConfig(t,e){let i=JSON.parse(localStorage.getItem("kookitConfig"))||{};i[t]=e,localStorage.setItem("kookitConfig",JSON.stringify(i))}static removeKookitConfig(){localStorage.removeItem("kookitConfig")}}let r=["章","节","回","節","卷","部","輯","辑","話","集","话","篇"];String.prototype.contains=function(t){return-1t&&!t.contains("[")&&!t.contains("(")&&!t.contains("。")&&!t.contains("“")&&!t.contains("‘")&&!t.contains(";")&&!t.contains(";")&&(t.startsWith("CHAPTER")||t.startsWith("Chapter")||t.startsWith("序章")||t.startsWith("前言")||t.startsWith("声明")||t.startsWith("聲明")||t.startsWith("写在前面的话")||t.startsWith("后记")||t.startsWith("楔子")||t.startsWith("后序")||t.startsWith("寫在前面的話")||t.startsWith("後記")||t.startsWith("後序")||t.startsWith("第")&&i(t)||t.startsWith("卷")&&n(t)||!e&&t.contains("第")&&(" "===t[t.indexOf("第")-1]||" "===t[t.indexOf("第")-1]||"、"===t[t.indexOf("第")-1]||":"===t[t.indexOf("第")-1]||":"===t[t.indexOf("第")-1])&&i(t.substr(t.indexOf("第")))||!e&&t.indexOf(" ")&&o(t)||!e&&t.indexOf(" ")&&o(t)||!e&&t.indexOf("、")&&h(t)||!e&&t.indexOf(":")&&s(t)||!e&&t.indexOf(":")&&s(t)),i=e=>{let i=!1;for(let t=0;t!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(1,t.indexOf(" ")))&&!/^\d+$/.test(t.substring(1,t.indexOf(" "))))||(!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(1,t.indexOf(" ")))&&!/^\d+$/.test(t.substring(1,t.indexOf(" "))))||!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(1))&&!/^\d+$/.test(t.substring(1)))),o=t=>!!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(0,t.indexOf(" ")))||(!!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(0,t.indexOf(" ")))||(!!/^\d+$/.test(t.substring(0,t.indexOf(" ")))||!!/^\d+$/.test(t.substring(0,t.indexOf(" "))))),s=t=>!!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(0,t.indexOf(":")))||(!!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(0,t.indexOf(":")))||(!!/^\d+$/.test(t.substring(0,t.indexOf(":")))||!!/^\d+$/.test(t.substring(0,t.indexOf(":"))))),h=t=>!!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(0,t.indexOf("、")))||!!/^\d+$/.test(t.substring(0,t.indexOf("、"))),u=t=>"♦"===t.trim()||"●"===t.trim()||"◾"===t.trim()||"◀"===t.trim()||"◼"===t.trim()||"■"===t.trim(),f=t=>"|"===t.trim()||"Next"===t.trim()||"Main menu"===t.trim()||"Section menu"===t.trim()||"Previous"===t.trim();var d=window;window.a=window.atob;String.prototype.c=function(t){return-1c(void 0,void 0,void 0,function*(){a.removeKookitConfig();let t=yield new Promise((t,e)=>{t(d.e(d.a("ZG9jdW1lbnQudGl0bGU"+String.fromCharCode(61))))});return!!t.c(d.a("ZG8gUmU"+String.fromCharCode(61)))});var e="1.13.1",m="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},p=Array.prototype,v=Object.prototype,y="undefined"!=typeof Symbol?Symbol.prototype:null,b=p.push,x=p.slice,L=v.toString,T=v.hasOwnProperty,w="undefined"!=typeof ArrayBuffer,C="undefined"!=typeof DataView,k=Array.isArray,D=Object.keys,_=Object.create,S=w&&ArrayBuffer.isView,E=isNaN,B=isFinite,I=!{toString:null}.propertyIsEnumerable("toString"),O=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],A=Math.pow(2,53)-1;function N(n,o){return o=null==o?n.length-1:+o,function(){for(var t=Math.max(arguments.length-o,0),e=Array(t),i=0;i":">",'"':""","'":"'","`":"`"},re=ee(ie),ne=ee(At(ie)),oe=pt.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},se=/(.)^/,ae={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},le=/\\|'|\r|\n|\u2028|\u2029/g;function he(t){return"\\"+ae[t]}var ce=/^\s*(\w|\$)+\s*$/;var ue=0;function fe(t,e,i,r,n){if(!(r instanceof e))return t.apply(i,n);i=jt(t.prototype),n=t.apply(i,n);return M(n)?n:i}var de=N(function(n,o){function s(){for(var t=0,e=o.length,i=Array(e),r=0;r{let r=document.getElementById("page-area");if(r){let t=r.getElementsByTagName("iframe")[0];var n;t&&("scroll"===i?(n=t.contentDocument)&&(i=n.body,n=n.documentElement,t.height=2*Math.max(i.scrollHeight,i.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)+"px",setTimeout(()=>{let t=document.getElementById("page-area");if(t){let r=t.getElementsByTagName("iframe")[0];if(r){var n=r.contentDocument;if(n){let t=n.body;var o=t.lastElementChild,s=t.lastChild,a=t.getElementsByTagName("a"),l=t.getElementsByTagName("p"),h=t.getElementsByTagName("img"),c=t.getElementsByTagName("div"),n=a[a.length-1],a=l[l.length-1],h=l[h.length-1],c=c[c.length-1];let e=a||n||h||c;Qe.isElement(n)&&Qe.isElement(a)&&Qe.isElement(c)&&(e=n.clientHeight+n.offsetTop>a.clientHeight+a.offsetTop?n:a,c.clientHeight+c.offsetTop>e.clientHeight+e.offsetTop&&(e=c)),Qe.isElement(h)&&h.clientHeight+h.offsetTop>e.clientHeight+e.offsetTop&&(e=h);let i=0;if((o||e||s)&&(3!==s.nodeType||o||e)){if(3===s.nodeType&&document.createRange){let t=document.createRange();t.selectNodeContents(s),!t.getBoundingClientRect||(h=t.getBoundingClientRect())&&(i=h.bottom-h.top)}s=Math.max(Qe.isElement(o)?o.clientHeight+o.offsetTop:0,Qe.isElement(s)?s.clientHeight+s.offsetTop:0,Qe.isElement(e)?e.clientHeight+e.offsetTop:0)+400+(3===s.nodeType?i:0);r.height=s+"px"}}}}},500)):t.height=e.offsetHeight+"px")}},Ye=t=>{var e;let i="";return t.lastChild&&null!==(e=t.lastChild)&&void 0!==e&&e.lastChild&&!(e=>{try{return e instanceof HTMLElement}catch(t){return typeof e==="object"&&e.nodeType===1&&typeof e.style==="object"&&typeof e.ownerDocument==="object"}})(null===(e=t.lastChild)||void 0===e?void 0:e.lastChild)&&(i=(null===(t=t.lastChild)||void 0===t?void 0:t.lastChild.textContent)||""),i},ti=(t,e="")=>{var i=document.createElement("iframe");if(i.style.width="100%",i.style.border="0",i.style.margin="0",i.style.padding="0",i.style.fontSize="100%",i.style.font="inherit",i.style.verticalAlign="baseline",t.innerHTML="",t.appendChild(i),e&&i.contentDocument){let t=i.contentDocument.createElement("style");t.id="azw3-style",t.textContent=e,i.contentDocument.head.appendChild(t)}},ei=()=>{let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){e=e.contentDocument;if(e)return{totalPage:parseInt(e.body.scrollWidth/e.body.clientWidth+"")+1,currentPage:parseInt(e.body.scrollLeft/e.body.clientWidth+"")+1}}}},ii=(i,r)=>{let t=document.getElementById("page-area");if(t){var n=t.getElementsByTagName("iframe")[0];if(n){let e=n.contentDocument;if(e){let t=e.createElement("style");t.id="default-style",t.textContent="p,empty-line{display: inherit;margin-block-start: inherit;margin-block-end: inherit;margin-inline-start: inherit;margin-inline-end: inherit;}body{margin: 0px}",e.head.appendChild(t),"scroll"!==r&&(n="double"===r?2:1,r=(r=Math.floor(i.clientWidth/12))%2==0?r:r-1,e.body.setAttribute("style",`width: auto;height: 100%;overflow-y: hidden;overflow-X: hidden;padding-left: 0px;padding-right: 0px;margin: 0px;box-sizing: border-box;max-width: inherit;column-fill: auto;column-gap: ${r}px;column-count: 12;column-width: ${(i.offsetWidth-r)/n}px;`))}}}};var ie={S:"万与丑专业丛东丝丢两严丧个丬丰临为丽举么义乌乐乔习乡书买乱争于亏云亘亚产亩亲亵亸亿仅从仑仓仪们价众优伙会伛伞伟传伤伥伦伧伪伫体余佣佥侠侣侥侦侧侨侩侪侬俣俦俨俩俪俭债倾偬偻偾偿傥傧储傩儿兑兖党兰关兴兹养兽冁内冈册写军农冢冯冲决况冻净凄凉凌减凑凛几凤凫凭凯击凼凿刍划刘则刚创删别刬刭刽刿剀剂剐剑剥剧劝办务劢动励劲劳势勋勐勚匀匦匮区医华协单卖卢卤卧卫却卺厂厅历厉压厌厍厕厢厣厦厨厩厮县参叆叇双发变叙叠叶号叹叽吁后吓吕吗吣吨听启吴呒呓呕呖呗员呙呛呜咏咔咙咛咝咤咴咸哌响哑哒哓哔哕哗哙哜哝哟唛唝唠唡唢唣唤唿啧啬啭啮啰啴啸喷喽喾嗫呵嗳嘘嘤嘱噜噼嚣嚯团园囱围囵国图圆圣圹场坂坏块坚坛坜坝坞坟坠垄垅垆垒垦垧垩垫垭垯垱垲垴埘埙埚埝埯堑堕塆墙壮声壳壶壸处备复够头夸夹夺奁奂奋奖奥妆妇妈妩妪妫姗姜娄娅娆娇娈娱娲娴婳婴婵婶媪嫒嫔嫱嬷孙学孪宁宝实宠审宪宫宽宾寝对寻导寿将尔尘尧尴尸尽层屃屉届属屡屦屿岁岂岖岗岘岙岚岛岭岳岽岿峃峄峡峣峤峥峦崂崃崄崭嵘嵚嵛嵝嵴巅巩巯币帅师帏帐帘帜带帧帮帱帻帼幂幞干并广庄庆庐庑库应庙庞废庼廪开异弃张弥弪弯弹强归当录彟彦彻径徕御忆忏忧忾怀态怂怃怄怅怆怜总怼怿恋恳恶恸恹恺恻恼恽悦悫悬悭悯惊惧惨惩惫惬惭惮惯愍愠愤愦愿慑慭憷懑懒懔戆戋戏戗战戬户扎扑扦执扩扪扫扬扰抚抛抟抠抡抢护报担拟拢拣拥拦拧拨择挂挚挛挜挝挞挟挠挡挢挣挤挥挦捞损捡换捣据捻掳掴掷掸掺掼揸揽揿搀搁搂搅携摄摅摆摇摈摊撄撑撵撷撸撺擞攒敌敛数斋斓斗斩断无旧时旷旸昙昼昽显晋晒晓晔晕晖暂暧札术朴机杀杂权条来杨杩杰极构枞枢枣枥枧枨枪枫枭柜柠柽栀栅标栈栉栊栋栌栎栏树栖样栾桊桠桡桢档桤桥桦桧桨桩梦梼梾检棂椁椟椠椤椭楼榄榇榈榉槚槛槟槠横樯樱橥橱橹橼檐檩欢欤欧歼殁殇残殒殓殚殡殴毁毂毕毙毡毵氇气氢氩氲汇汉污汤汹沓沟没沣沤沥沦沧沨沩沪沵泞泪泶泷泸泺泻泼泽泾洁洒洼浃浅浆浇浈浉浊测浍济浏浐浑浒浓浔浕涂涌涛涝涞涟涠涡涢涣涤润涧涨涩淀渊渌渍渎渐渑渔渖渗温游湾湿溃溅溆溇滗滚滞滟滠满滢滤滥滦滨滩滪漤潆潇潋潍潜潴澜濑濒灏灭灯灵灾灿炀炉炖炜炝点炼炽烁烂烃烛烟烦烧烨烩烫烬热焕焖焘煅煳熘爱爷牍牦牵牺犊犟状犷犸犹狈狍狝狞独狭狮狯狰狱狲猃猎猕猡猪猫猬献獭玑玙玚玛玮环现玱玺珉珏珐珑珰珲琎琏琐琼瑶瑷璇璎瓒瓮瓯电画畅畲畴疖疗疟疠疡疬疮疯疱疴痈痉痒痖痨痪痫痴瘅瘆瘗瘘瘪瘫瘾瘿癞癣癫癯皑皱皲盏盐监盖盗盘眍眦眬着睁睐睑瞒瞩矫矶矾矿砀码砖砗砚砜砺砻砾础硁硅硕硖硗硙硚确硷碍碛碜碱碹磙礼祎祢祯祷祸禀禄禅离秃秆种积称秽秾稆税稣稳穑穷窃窍窑窜窝窥窦窭竖竞笃笋笔笕笺笼笾筑筚筛筜筝筹签简箓箦箧箨箩箪箫篑篓篮篱簖籁籴类籼粜粝粤粪粮糁糇紧絷纟纠纡红纣纤纥约级纨纩纪纫纬纭纮纯纰纱纲纳纴纵纶纷纸纹纺纻纼纽纾线绀绁绂练组绅细织终绉绊绋绌绍绎经绐绑绒结绔绕绖绗绘给绚绛络绝绞统绠绡绢绣绤绥绦继绨绩绪绫绬续绮绯绰绱绲绳维绵绶绷绸绹绺绻综绽绾绿缀缁缂缃缄缅缆缇缈缉缊缋缌缍缎缏缐缑缒缓缔缕编缗缘缙缚缛缜缝缞缟缠缡缢缣缤缥缦缧缨缩缪缫缬缭缮缯缰缱缲缳缴缵罂网罗罚罢罴羁羟羡翘翙翚耢耧耸耻聂聋职聍联聩聪肃肠肤肷肾肿胀胁胆胜胧胨胪胫胶脉脍脏脐脑脓脔脚脱脶脸腊腌腘腭腻腼腽腾膑臜舆舣舰舱舻艰艳艹艺节芈芗芜芦苁苇苈苋苌苍苎苏苘苹茎茏茑茔茕茧荆荐荙荚荛荜荞荟荠荡荣荤荥荦荧荨荩荪荫荬荭荮药莅莜莱莲莳莴莶获莸莹莺莼萚萝萤营萦萧萨葱蒇蒉蒋蒌蓝蓟蓠蓣蓥蓦蔷蔹蔺蔼蕲蕴薮藁藓虏虑虚虫虬虮虽虾虿蚀蚁蚂蚕蚝蚬蛊蛎蛏蛮蛰蛱蛲蛳蛴蜕蜗蜡蝇蝈蝉蝎蝼蝾螀螨蟏衅衔补衬衮袄袅袆袜袭袯装裆裈裢裣裤裥褛褴襁襕见观觃规觅视觇览觉觊觋觌觍觎觏觐觑觞触觯詟誉誊讠计订讣认讥讦讧讨让讪讫训议讯记讱讲讳讴讵讶讷许讹论讻讼讽设访诀证诂诃评诅识诇诈诉诊诋诌词诎诏诐译诒诓诔试诖诗诘诙诚诛诜话诞诟诠诡询诣诤该详诧诨诩诪诫诬语诮误诰诱诲诳说诵诶请诸诹诺读诼诽课诿谀谁谂调谄谅谆谇谈谊谋谌谍谎谏谐谑谒谓谔谕谖谗谘谙谚谛谜谝谞谟谠谡谢谣谤谥谦谧谨谩谪谫谬谭谮谯谰谱谲谳谴谵谶谷豮贝贞负贠贡财责贤败账货质贩贪贫贬购贮贯贰贱贲贳贴贵贶贷贸费贺贻贼贽贾贿赀赁赂赃资赅赆赇赈赉赊赋赌赍赎赏赐赑赒赓赔赕赖赗赘赙赚赛赜赝赞赟赠赡赢赣赪赵赶趋趱趸跃跄跖跞践跶跷跸跹跻踊踌踪踬踯蹑蹒蹰蹿躏躜躯车轧轨轩轪轫转轭轮软轰轱轲轳轴轵轶轷轸轹轺轻轼载轾轿辀辁辂较辄辅辆辇辈辉辊辋辌辍辎辏辐辑辒输辔辕辖辗辘辙辚辞辩辫边辽达迁过迈运还这进远违连迟迩迳迹适选逊递逦逻遗遥邓邝邬邮邹邺邻郁郄郏郐郑郓郦郧郸酝酦酱酽酾酿释里鉅鉴銮錾钆钇针钉钊钋钌钍钎钏钐钑钒钓钔钕钖钗钘钙钚钛钝钞钟钠钡钢钣钤钥钦钧钨钩钪钫钬钭钮钯钰钱钲钳钴钵钶钷钸钹钺钻钼钽钾钿铀铁铂铃铄铅铆铈铉铊铋铍铎铏铐铑铒铕铗铘铙铚铛铜铝铞铟铠铡铢铣铤铥铦铧铨铪铫铬铭铮铯铰铱铲铳铴铵银铷铸铹铺铻铼铽链铿销锁锂锃锄锅锆锇锈锉锊锋锌锍锎锏锐锑锒锓锔锕锖锗错锚锜锞锟锠锡锢锣锤锥锦锨锩锫锬锭键锯锰锱锲锳锴锵锶锷锸锹锺锻锼锽锾锿镀镁镂镃镆镇镈镉镊镌镍镎镏镐镑镒镕镖镗镙镚镛镜镝镞镟镠镡镢镣镤镥镦镧镨镩镪镫镬镭镮镯镰镱镲镳镴镶长门闩闪闫闬闭问闯闰闱闲闳间闵闶闷闸闹闺闻闼闽闾闿阀阁阂阃阄阅阆阇阈阉阊阋阌阍阎阏阐阑阒阓阔阕阖阗阘阙阚阛队阳阴阵阶际陆陇陈陉陕陧陨险随隐隶隽难雏雠雳雾霁霉霭靓静靥鞑鞒鞯鞴韦韧韨韩韪韫韬韵页顶顷顸项顺须顼顽顾顿颀颁颂颃预颅领颇颈颉颊颋颌颍颎颏颐频颒颓颔颕颖颗题颙颚颛颜额颞颟颠颡颢颣颤颥颦颧风飏飐飑飒飓飔飕飖飗飘飙飚飞飨餍饤饥饦饧饨饩饪饫饬饭饮饯饰饱饲饳饴饵饶饷饸饹饺饻饼饽饾饿馀馁馂馃馄馅馆馇馈馉馊馋馌馍馎馏馐馑馒馓馔馕马驭驮驯驰驱驲驳驴驵驶驷驸驹驺驻驼驽驾驿骀骁骂骃骄骅骆骇骈骉骊骋验骍骎骏骐骑骒骓骔骕骖骗骘骙骚骛骜骝骞骟骠骡骢骣骤骥骦骧髅髋髌鬓魇魉鱼鱽鱾鱿鲀鲁鲂鲄鲅鲆鲇鲈鲉鲊鲋鲌鲍鲎鲏鲐鲑鲒鲓鲔鲕鲖鲗鲘鲙鲚鲛鲜鲝鲞鲟鲠鲡鲢鲣鲤鲥鲦鲧鲨鲩鲪鲫鲬鲭鲮鲯鲰鲱鲲鲳鲴鲵鲶鲷鲸鲹鲺鲻鲼鲽鲾鲿鳀鳁鳂鳃鳄鳅鳆鳇鳈鳉鳊鳋鳌鳍鳎鳏鳐鳑鳒鳓鳔鳕鳖鳗鳘鳙鳛鳜鳝鳞鳟鳠鳡鳢鳣鸟鸠鸡鸢鸣鸤鸥鸦鸧鸨鸩鸪鸫鸬鸭鸮鸯鸰鸱鸲鸳鸴鸵鸶鸷鸸鸹鸺鸻鸼鸽鸾鸿鹀鹁鹂鹃鹄鹅鹆鹇鹈鹉鹊鹋鹌鹍鹎鹏鹐鹑鹒鹓鹔鹕鹖鹗鹘鹚鹛鹜鹝鹞鹟鹠鹡鹢鹣鹤鹥鹦鹧鹨鹩鹪鹫鹬鹭鹯鹰鹱鹲鹳鹴鹾麦麸黄黉黡黩黪黾鼋鼌鼍鼗鼹齄齐齑齿龀龁龂龃龄龅龆龇龈龉龊龋龌龙龚龛龟志制咨只里系范松没尝尝闹面准钟别闲乾尽脏拼",T:"萬與醜專業叢東絲丟兩嚴喪個爿豐臨為麗舉麽義烏樂喬習鄉書買亂爭於虧雲亙亞產畝親褻亸億僅從侖倉儀們價眾優夥會傴傘偉傳傷倀倫傖偽佇體余傭僉俠侶僥偵側僑儈儕儂俁儔儼倆儷儉債傾傯僂僨償儻儐儲儺兒兌兗黨蘭關興茲養獸囅內岡冊寫軍農冢馮沖決況凍凈淒涼淩減湊凜幾鳳鳧憑凱擊氹鑿芻劃劉則剛創刪別刬剄劊劌剴劑剮劍剝劇勸辦務勱動勵勁勞勢勛猛勚勻匭匱區醫華協單賣盧鹵臥衛卻巹廠廳歷厲壓厭厙廁廂厴廈廚廄廝縣參叆叇雙發變敘叠葉號嘆嘰籲後嚇呂嗎唚噸聽啟吳嘸囈嘔嚦唄員咼嗆嗚詠哢嚨嚀噝咤噅鹹哌響啞噠嘵嗶噦嘩噲嚌噥喲嘜唝嘮唡嗩唣喚唿嘖嗇囀嚙啰啴嘯噴嘍嚳囁呵噯噓嚶囑嚕劈囂謔團園囪圍圇國圖圓聖壙場阪壞塊堅壇壢壩塢墳墜壟壟壚壘墾坰堊墊埡垯垱塏堖塒塤堝墊垵塹墮塆墻壯聲殼壺壸處備復夠頭誇夾奪奩奐奮獎奧妝婦媽嫵嫗媯姍姜婁婭嬈嬌孌娛媧嫻婳嬰嬋嬸媼嬡嬪嬙嬤孫學孿寧寶實寵審憲宮寬賓寢對尋導壽將爾塵堯尷屍盡層屃屜屆屬屢屨嶼歲豈嶇崗峴嶴嵐島嶺嶽崠巋峃嶧峽峣嶠崢巒嶗崍崄嶄嶸嵚崳嶁脊巔鞏巰幣帥師幃帳簾幟帶幀幫幬幘幗冪襆幹並廣莊慶廬廡庫應廟龐廢庼廩開異棄張彌弳彎彈強歸當錄彟彥徹徑徠禦憶懺憂愾懷態慫憮慪悵愴憐總懟懌戀懇惡慟懨愷惻惱惲悅愨懸慳憫驚懼慘懲憊愜慚憚慣湣慍憤憒願懾慭怵懣懶懍戇戔戲戧戰戩戶紮撲扡執擴捫掃揚擾撫拋摶摳掄搶護報擔擬攏揀擁攔擰撥擇掛摯攣挜撾撻挾撓擋撟掙擠揮挦撈損撿換搗據撚擄摑擲撣摻摜摣攬撳攙擱摟攪攜攝攄擺搖擯攤攖撐攆擷擼攛擻攢敵斂數齋斕鬥斬斷無舊時曠旸曇晝昽顯晉曬曉曄暈暉暫曖劄術樸機殺雜權條來楊榪傑極構樅樞棗櫪梘棖槍楓梟櫃檸檉梔柵標棧櫛櫳棟櫨櫟欄樹棲樣欒棬椏橈楨檔榿橋樺檜槳樁夢梼梾檢欞槨櫝槧欏橢樓欖櫬櫚櫸槚檻檳櫧橫檣櫻櫫櫥櫓櫞檐檁歡歟歐殲歿殤殘殞殮殫殯毆毀轂畢斃氈毿氌氣氫氬氳匯漢汙湯洶沓溝沒灃漚瀝淪滄沨溈滬沵濘淚澩瀧瀘濼瀉潑澤涇潔灑窪浹淺漿澆湞浉濁測澮濟瀏浐渾滸濃潯浕塗湧濤澇淶漣潿渦涢渙滌潤澗漲澀澱淵淥漬瀆漸澠漁瀋滲溫遊灣濕潰濺漵溇潷滾滯灩灄滿瀅濾濫灤濱灘滪濫瀠瀟瀲濰潛瀦瀾瀨瀕灝滅燈靈災燦煬爐燉煒熗點煉熾爍爛烴燭煙煩燒燁燴燙燼熱煥燜燾煆糊溜愛爺牘牦牽犧犢犟狀獷獁猶狽麅狝獰獨狹獅獪猙獄猻獫獵獼玀豬貓猬獻獺璣玙玚瑪瑋環現玱璽瑉玨琺瓏珰琿琎璉瑣瓊瑤璦璇瓔瓚甕甌電畫暢畬疇癤療瘧癘瘍癧瘡瘋皰屙癰痙癢瘂癆瘓癇癡癉瘆瘞瘺癟癱癮癭癩癬癲臒皚皺皸盞鹽監蓋盜盤瞘眥眬著睜睞瞼瞞矚矯磯礬礦碭碼磚硨硯碸礪礱礫礎硁矽碩硤磽硙硚確鹼礙磧磣堿碹滾禮祎禰禎禱禍稟祿禪離禿稈種積稱穢秾穭稅穌穩穡窮竊竅窯竄窩窺竇窶豎競篤筍筆筧箋籠籩築篳篩筜箏籌簽簡箓簀篋籜籮簞簫簣簍籃籬籪籟糴類秈糶糲粵糞糧糝糇緊縶糸糾紆紅紂纖紇約級紈纊紀紉緯紜纮純紕紗綱納纴縱綸紛紙紋紡纻纼紐紓線紺紲紱練組紳細織終縐絆紼絀紹繹經紿綁絨結絝繞绖絎繪給絢絳絡絕絞統綆綃絹繡绤綏絳繼綈績緒綾绬續綺緋綽緔緄繩維綿綬繃綢绹綹綣綜綻綰綠綴緇緙緗緘緬纜緹緲緝缊繢緦綞緞緶缐緱縋緩締縷編緡緣縉縛縟縝縫缞縞纏縭縊縑繽縹縵縲纓縮繆繅纈繚繕繒韁繾繰繯繳纘罌網羅罰罷羆羈羥羨翹翙翚耮耬聳恥聶聾職聹聯聵聰肅腸膚膁腎腫脹脅膽勝朧腖臚脛膠脈膾臟臍腦膿臠腳脫腡臉臘腌腘腭膩靦膃騰臏臜輿艤艦艙艫艱艷艹藝節羋薌蕪蘆蓯葦藶莧萇蒼苧蘇檾蘋莖蘢蔦塋煢繭荊薦荙莢蕘蓽蕎薈薺蕩榮葷滎犖熒蕁藎蓀蔭蕒葒葤藥蒞蓧萊蓮蒔萵薟獲蕕瑩鶯蒓萚蘿螢營縈蕭薩蔥蕆蕢蔣蔞藍薊蘺蕷鎣驀薔蘞藺藹蘄蘊藪槁蘚虜慮虛蟲虬蟣雖蝦蠆蝕蟻螞蠶蠔蜆蠱蠣蟶蠻蟄蛺蟯螄蠐蛻蝸蠟蠅蟈蟬蠍螻蠑螀蟎蟏釁銜補襯袞襖裊袆襪襲袯裝襠裈褳襝褲襇褸襤繈襕見觀觃規覓視覘覽覺覬覡覿觍覦覯覲覷觴觸觶詟譽謄訁計訂訃認譏訐訌討讓訕訖訓議訊記讱講諱謳詎訝訥許訛論讻訟諷設訪訣證詁訶評詛識诇詐訴診詆謅詞詘詔诐譯詒誆誄試詿詩詰詼誠誅詵話誕詬詮詭詢詣諍該詳詫諢詡诪誡誣語誚誤誥誘誨誑說誦誒請諸諏諾讀諑誹課諉諛誰諗調諂諒諄誶談誼謀諶諜謊諫諧謔謁謂諤諭諼讒諮諳諺諦謎諞谞謨讜謖謝謠謗謚謙謐謹謾謫譾謬譚譖譙讕譜譎讞譴譫讖谷豮貝貞負贠貢財責賢敗賬貨質販貪貧貶購貯貫貳賤賁貰貼貴貺貸貿費賀貽賊贄賈賄貲賃賂贓資賅贐賕賑賚賒賦賭賫贖賞賜赑赒賡賠賧賴赗贅賻賺賽賾贗贊赟贈贍贏贛赪趙趕趨趲躉躍蹌跖躒踐跶蹺蹕躚躋踴躊蹤躓躑躡蹣躕躥躪躦軀車軋軌軒轪軔轉軛輪軟轟軲軻轤軸軹軼軤軫轢軺輕軾載輊轎辀輇輅較輒輔輛輦輩輝輥輞辌輟輜輳輻輯辒輸轡轅轄輾轆轍轔辭辯辮邊遼達遷過邁運還這進遠違連遲邇逕跡適選遜遞邐邏遺遙鄧鄺鄔郵鄒鄴鄰郁郤郟鄶鄭鄆酈鄖鄲醞酦醬釅釃釀釋裏鉅鑒鑾鏨釓釔針釘釗釙釕釷釬釧釤钑釩釣鍆釹钖釵钘鈣鈈鈦鈍鈔鐘鈉鋇鋼鈑鈐鑰欽鈞鎢鉤鈧鈁鈥鈄鈕鈀鈺錢鉦鉗鈷缽鈳鉕鈽鈸鉞鉆鉬鉭鉀鈿鈾鐵鉑鈴鑠鉛鉚鈰鉉鉈鉍鈹鐸铏銬銠鉺銪鋏鋣鐃铚鐺銅鋁銱銦鎧鍘銖銑鋌銩铦鏵銓鉿銚鉻銘錚銫鉸銥鏟銃鐋銨銀銣鑄鐒鋪铻錸鋱鏈鏗銷鎖鋰鋥鋤鍋鋯鋨銹銼鋝鋒鋅鋶鐦鐧銳銻鋃鋟鋦錒錆鍺錯錨锜錁錕锠錫錮鑼錘錐錦鍁錈錇錟錠鍵鋸錳錙鍥锳鍇鏘鍶鍔鍤鍬鍾鍛鎪锽鍰鎄鍍鎂鏤镃鏌鎮镈鎘鑷鐫鎳鎿鎦鎬鎊鎰镕鏢鏜鏍镚鏞鏡鏑鏃鏇镠鐔鐝鐐鏷鑥鐓鑭鐠鑹鏹鐙鑊鐳镮鐲鐮鐿鑔鑣镴鑲長門閂閃閆闬閉問闖閏闈閑閎間閔閌悶閘鬧閨聞闥閩閭闿閥閣閡閫鬮閱閬阇閾閹閶鬩閿閽閻閼闡闌闃阓闊闋闔闐阘闕闞阛隊陽陰陣階際陸隴陳陘陜隉隕險隨隱隸雋難雛讎靂霧霽黴靄靚靜靨韃鞽韉韝韋韌韨韓韙韞韜韻頁頂頃頇項順須頊頑顧頓頎頒頌頏預顱領頗頸頡頰颋頜潁颎頦頤頻颒頹頷颕穎顆題颙顎顓顏額顳顢顛顙顥颣顫顬顰顴風飏飐颮颯颶飔颼飖飗飄飆飈飛饗饜饤饑饦餳飩餼飪飫飭飯飲餞飾飽飼饳飴餌饒餉饸饹餃饻餅餑饾餓餘餒馂馃餛餡館餷饋馉餿饞馌饃馎餾饈饉饅饊饌饢馬馭馱馴馳驅驲駁驢駔駛駟駙駒騶駐駝駑駕驛駘驍罵骃驕驊駱駭駢骉驪騁驗骍骎駿騏騎騍騅骔骕驂騙騭骙騷騖驁騮騫騸驃騾驄驏驟驥骦驤髏髖髕鬢魘魎魚鱽鱾魷鲀魯魴鲄鮁鮃鮎鱸鲉鲊鮒鲌鮑鱟鲏鮐鮭鮚鲓鮪鮞鲖鲗鲘鲙鱭鮫鮮鲝鯗鱘鯁鱺鰱鰹鯉鰣鰷鯀鯊鯇鲪鯽鲬鯖鯪鲯鯫鯡鯤鯧鯝鯢鯰鯛鯨鲹鯴鯔鱝鰈鲾鲿鳀鳁鳂鰓鱷鰍鰒鰉鳈鳉鯿鰠鰲鰭鰨鰥鰩鳑鳒鰳鰾鱈鱉鰻鰵鱅鳛鱖鱔鱗鱒鳠鳡鱧鳣鳥鳩雞鳶鳴鸤鷗鴉鸧鴇鴆鴣鶇鸕鴨鸮鴦鸰鴟鴝鴛鸴鴕鷥鷙鴯鴰鵂鸻鸼鴿鸞鴻鹀鵓鸝鵑鵠鵝鵒鷴鵜鵡鵲鶓鵪鹍鵯鵬鹐鶉鹒鹓鹔鶘鹖鶚鶻鶿鶥鶩鹝鷂鹟鹠鹡鹢鶼鶴鹥鸚鷓鷚鷯鷦鷲鷸鷺鹯鷹鸌鹲鸛鹴鹺麥麩黃黌黡黷黲黽黿鼌鼉鼗鼴齇齊齏齒齔龁龂齟齡齙齠齜齦齬齪齲齷龍龔龕龜誌制咨只裏系範松沒嘗嘗鬧面準鐘別閑乾盡臟拼"},ri=ie.S,ni=ie.T;function oi(t,e){var i,r,n,o,s="",a=e?(o=ri,ni):(o=ni,ri);if("string"!=typeof t)return t;for(i=0;ic(void 0,void 0,void 0,function*(){let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){let t=e.contentDocument;t&&(e=(e=Math.floor(i.clientWidth/12))%2==0?e:e-1,0{let o=document.getElementById("page-area");var s,a;o&&(!(s=o.getElementsByTagName("iframe")[0])||(a=s.contentDocument)&&Math.abs(t.scrollHeight-t.scrollTop-t.clientHeight)<10&&Math.abs(a.body.scrollWidth-a.body.scrollLeft-a.body.clientWidth)<10&&(di(t,e,i,r),n("rendered")))})(i,r,n,o,l),t.body.scrollBy({top:0,left:i.offsetWidth+e,behavior:a?"smooth":"auto"})))}}}),hi=(t,e,i,r)=>{let n=a.getKookitConfig("chapterTitle");var o=Qe.findIndex(e.map(t=>(t.label=t.label.trim(),t)),{label:n.trim()});0!==o&&-1!==o&&n&&(a.setKookitConfig("chapterTitle",e[o-1].label),a.setKookitConfig("text","prevChapter"),ci(e[o-1].label,i,t,r))},ci=(i="",r,n,o)=>{let t=document.getElementById("page-area");if(t){var s=t.getElementsByTagName("iframe")[0];if(s){let e=s.contentDocument;if(e){e.body.innerHTML="";let t=Qe.findIndex(r.map(t=>(t.title=t.title.trim(),t)),{title:i.trim()});t=-1===t?0:t,e.body.innerHTML=r[t].text,a.setKookitConfig("chapterTitle",r[t].title),a.setKookitConfig("percentage",t/r.length+""),Xe(n,o),((r,n)=>{let t=document.getElementById("page-area");if(t){var o=t.getElementsByTagName("iframe")[0];if(o){let i=o.contentDocument;if(i){var s,o=Math.floor(r.clientWidth/12),a=o%2==0?o:o-1;let t,e;for(s of i.getElementsByTagName("img")){var l=s.parentElement;t=0,e=0,s.width&&s.height?s.height/s.width>l.clientHeight/l.clientWidth?(t=l.clientHeight,e=t*s.width/s.height):(e=l.clientWidth,t=e*s.height/s.width):t=l&&l.clientWidth&&0{let s=t||a.getKookitConfig("text")||"",e=document.getElementById("page-area");if(e){t=e.getElementsByTagName("iframe")[0];if(t){let i=t.contentDocument;if(i){let e=Array.from(i.body.querySelectorAll("h1,h2,h3,h4,p,img"));if(s){let t=e.filter((t,e)=>(t.innerText&&(t.innerText===s||t.innerText===si.t2s(s)||t.innerText===si.s2t(s))||t.getAttribute("recindex")&&t.getAttribute("recindex")===s)&&Math.abs(e-parseInt(o||a.getKookitConfig("count")))<2)[0];"scroll"!==n?i.body.scrollTo(s&&t?t.getBoundingClientRect().left:"prevChapter"===s?i.body.scrollWidth:0,0):r.scrollTo(0,s&&t?t.getBoundingClientRect().top:0)}else("scroll"!==n?i.body:r).scrollTo(0,0)}}}},fi=(n,o)=>c(void 0,void 0,void 0,function*(){if(!ai){let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){let t=e.contentDocument;if(t){let e=Array.from(t.body.querySelectorAll("h1,h2,h3,h4,p,img"));let i=e.filter(t=>pi(n,t,o)&&(t.innerText.trim()||t.getAttribute("recindex")))[0],r=0;for(let t=0;t{ai=!1},100)}}}}}),di=(t,e,i,r)=>{let n=a.getKookitConfig("chapterTitle");var o=Qe.findIndex(e.map(t=>(t.label=t.label.trim(),t)),{label:n.trim()});o!==e.length-1&&-1!==o&&(a.setKookitConfig("chapterTitle",e[o+1].label),a.setKookitConfig("text",""),ci(e[o+1].label,i,t,r))},gi=(r,n)=>{let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){let i=e.contentDocument;if(i){let t=Array.from(i.body.querySelectorAll("h1,h2,h3,h4,p,img")),e=t.filter(t=>pi(r,t,n)&&(t.innerText.trim()||t.getAttribute("recindex")));return("scroll"!==n?e:t).map(t=>t.innerText).join(" ")}}}},mi=(r,n)=>{let o=[];for(let i=0;i{var r,n=!1,o=e.getBoundingClientRect();return"scroll"!==i&&e.innerText.trim()?n=-10<(r=o.left)&&r<=t.offsetWidth:e.innerText.trim()?n=(r=o.top)>=t.scrollTop&&r<=t.scrollTop+t.offsetHeight:"scroll"!==i&&(e.id||e.onerror)&&"IMG"===e.tagName?n=0<=(i=o.left)&&i<=t.offsetWidth:(e.id||e.onerror)&&"IMG"===e.tagName&&(n=(o=o.top)>=t.scrollTop-t.clientHeight/2&&o<=t.scrollTop+t.offsetHeight+t.clientHeight/2),n};class vi{constructor(t){this.bookStr=t,this.chapterList=[],this.chapterDocList=[]}getChapterDoc(){var e=-1")?this.bookStr.split("").filter(t=>""!==t.trim()):this.bookStr.split("
").filter(t=>""!==t.trim());let n=[],o=[],i="";for(let t=0;t{var e=0(!e&&(t.innerText.trim().startsWith("第")&&i(t.innerText.trim())||t.innerText.trim().startsWith("Chapter")||t.innerText.trim().startsWith("CHAPTER"))&&(e=!0),l(t.innerText.trim(),e))))}getChapterDoc(){if(0 ").filter(t=>""!==t.trim());for(let t=0;tthis.chapterList.length&&0===t&&(e=Math.floor(9e5*Math.random())+1e5,this.chapterList.unshift({label:"Forword"+t,id:"title"+e,href:"title"+e,subitems:[]})),this.chapterDocList.push({title:this.chapterList[t].label,text:i[t]});return this.chapterDocList}}class bi{constructor(){this.callbacks={},this.callbacks.base={}}on(t,e){const i=this;if(void 0===t||""===t)return console.warn("wrong names"),!1;if(void 0===e)return console.warn("wrong callback"),!1;const r=this.resolveNames(t);return r.forEach(function(t){t=i.resolveName(t);i.callbacks[t.namespace]instanceof Object||(i.callbacks[t.namespace]={}),i.callbacks[t.namespace][t.value]instanceof Array||(i.callbacks[t.namespace][t.value]=[]),i.callbacks[t.namespace][t.value].push(e)}),this}off(t){const r=this;if(void 0===t||""===t)return console.warn("wrong name"),!1;const e=this.resolveNames(t);return e.forEach(function(t){var e=r.resolveName(t);if("base"!==e.namespace&&""===e.value)delete r.callbacks[e.namespace];else if("base"===e.namespace)for(const i in r.callbacks)r.callbacks[i]instanceof Object&&r.callbacks[i][e.value]instanceof Array&&(delete r.callbacks[i][e.value],0===Object.keys(r.callbacks[i]).length&&delete r.callbacks[i]);else r.callbacks[e.namespace]instanceof Object&&r.callbacks[e.namespace][e.value]instanceof Array&&(delete r.callbacks[e.namespace][e.value],0===Object.keys(r.callbacks[e.namespace]).length&&delete r.callbacks[e.namespace])}),this}trigger(t,e=[]){if(void 0===t||""===t)return console.warn("wrong name"),!1;const i=this;const r=e instanceof Array?e:[];let n=this.resolveNames(t);n=this.resolveName(n[0]),setTimeout(()=>{if("base"===n.namespace)for(const t in i.callbacks){if(i.callbacks[t]instanceof Object&&i.callbacks[t][n.value]instanceof Array)i.callbacks[t][n.value].forEach(function(t){t.apply(i,r)});else if(this.callbacks[n.namespace]instanceof Object){if(""===n.value)return console.warn("wrong name"),this;i.callbacks[n.namespace][n.value].forEach(function(t){t.apply(i,r)})}return null}},100)}resolveNames(t){let e=t;return e=e.replace(/[^a-zA-Z0-9 ,/.]/g,""),e=e.replace(/[,/]+/g," "),e=e.split(" "),e}resolveName(t){const e={};var i=t.split(".");return e.original=t,e.value=i[0],e.namespace="base",1=this.capacity)&&(this.buffer[this.size]=t,this.size+=1,!0)}full(){return this.size===this.capacity}get(t){return this.buffer[t]}}class Ci{constructor(t){this.getAzw3Style=t=>{var e;let i="";return t.documentElement.lastChild&&null!==(e=t.documentElement.lastChild)&&void 0!==e&&e.lastChild&&!this.isElement(null===(e=t.documentElement.lastChild)||void 0===e?void 0:e.lastChild)&&(i=(null===(t=t.documentElement.lastChild)||void 0===t?void 0:t.lastChild.textContent)||""),i},this.render_image=(o,s)=>new Promise((i,e)=>{var r=o[s],t=r.getAttribute("recindex")?+r.getAttribute("recindex"):s+1;r.setAttribute("onerror","this.style.display='none'");var n=this.read_image(t-1),t=new FileReader;t.onload=t=>{var e;r.src=null===(e=t.target)||void 0===e?void 0:e.result,i(null===(t=t.target)||void 0===t?void 0:t.result)},t.onerror=function(t){e(t)},t.readAsDataURL(n)}),this.view=new DataView(t),this.buffer=this.view.buffer,this.offset=0,this.header=null}parse(){}getUint8(){var t=this.view.getUint8(this.offset);return this.offset+=1,t}getUint16(){var t=this.view.getUint16(this.offset);return this.offset+=2,t}getUint32(){var t=this.view.getUint32(this.offset);return this.offset+=4,t}getStr(t){var e=xi(this.buffer.slice(this.offset,this.offset+t));return this.offset+=t,e}skip(t){this.offset+=t}setoffset(t){this.offset=t}get_record_extrasize(t,e){for(var i,r,n,o=t.length-1,s=0,a=15;0>3&2047,l=3+(7&s),h=r.size();for(let t=0;tc(this,void 0,void 0,function*(){this.load();var t=this.read_text(),t=Li.parseFromString(t,"text/html").documentElement,e=t.getElementsByTagName("img");for(let t=0;tpagebreak").filter(t=>t.trim());for(let t=0;tthis.chapterList.length&&0===t&&(e=Math.floor(9e5*Math.random())+1e5,this.chapterList.unshift({label:"Forword#"+t,id:"title"+e,href:"title"+e,subitems:[]})),this.chapterDocList.push({title:this.chapterList[t].label,text:i[t]});return this.chapterDocList}}const Di={svg:"image/svg+xml",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",zip:"application/zip",rar:"application/x-rar-compressed","7z":"application/x-7z-compressed",tar:"application/x-tar",html:"text/html",htm:"text/html",xml:"text/xml",xhtml:"application/xhtml+xml"};class _i{constructor(t,e,i,r,n){this.fileNameList=t,this.zip=e,this.bookStr="",this.format=n,this.bookDoc=null,this.mode=i,this.chapterList=[],this.extension=this.fileNameList[0].split(".").reverse()[0],this.element=r,this.getBookStr()}getBookStr(){let i=document.createElement("div");var r="single"===this.mode?1:2,t=Math.floor(this.element.clientWidth/12),n=t%2==0?t:t-1;for(let e=0;ec(this,void 0,void 0,function*(){var t=new Image;t.onload=function(){i(t.height/t.width)};let e;e="cbr"===this.format?this.zip.decompress(this.fileNameList[0]):"cbt"===this.format?this.zip[Qe.findLastIndex(this.zip,{name:this.fileNameList[0]})].buffer:yield this.zip.file(this.fileNameList[0]).async("arraybuffer"),t.src="data:"+Di[this.extension.toLowerCase()]+";base64,"+this.base64ArrayBuffer(e)}))}renderComic(){let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){let t=e.contentDocument;t&&(t.body.innerHTML=this.bookDoc.outerHTML)}}}renderImage(n){return new Promise((r,t)=>c(this,void 0,void 0,function*(){this.extension=this.fileNameList[0].split(".").reverse()[0];let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let e=i.contentDocument;if(e)if(e.getElementById(n+"")&&!e.getElementById(n+"").src){let t;t="cbr"===this.format?this.zip.decompress(this.fileNameList[n]):"cbt"===this.format?this.zip[Qe.findLastIndex(this.zip,{name:this.fileNameList[n]})].buffer:yield this.zip.file(this.fileNameList[n]).async("arraybuffer"),e.getElementById(n+"")&&(e.getElementById(n+"").src="data:"+Di[this.extension.toLowerCase()]+";base64,"+this.base64ArrayBuffer(t)),r()}else r()}}}))}base64ArrayBuffer(t){for(var e,i="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=new Uint8Array(t),o=n.byteLength,t=o%3,s=o-t,a=0;a>18]+r[(258048&e)>>12]+r[(4032&e)>>6]+r[63&e];return 1==t?i+=r[(252&(e=n[s]))>>2]+r[(3&e)<<4]+"==":2==t&&(i+=r[(64512&(e=n[s]<<8|n[1+s]))>>10]+r[(1008&e)>>4]+r[(15&e)<<2]+"="),i}}const Si=(i,r,n)=>c(void 0,void 0,void 0,function*(){let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){let t=e.contentDocument;t&&(e=(e=Math.floor(i.clientWidth/12))%2==0?e:e-1,0{var n=t||parseInt(a.getKookitConfig("count"))||0;let e=document.getElementById("page-area");if(e){t=e.getElementsByTagName("iframe")[0];if(t){let e=t.contentDocument;if(e)if(n){let t=Array.from(e.body.querySelectorAll("img"))[n];"scroll"!==r?e.body.scrollTo(n&&t?t.getBoundingClientRect().left:0,0):i.scrollTo(0,n&&t?t.getBoundingClientRect().top:0)}else("scroll"!==r?e.body:i).scrollTo(0,0)}}};window.e=window.eval,window.a=window.atob,t.Azw3Render=class extends bi{constructor(t,e,i){super(),this.azw3Buffer=t,this.mode=e,this.isSliding=i||!1,this.chapterList=[],this.chapterDocList=[],this.bookStr="",this.element=""}renderTo(n){return c(this,void 0,void 0,function*(){return new Promise((r,t)=>c(this,void 0,void 0,function*(){if(yield g()){var e=yield new Ci(this.azw3Buffer).render(),i=e.outerHTML;this.bookStr=i,this.element=n;let t=new yi(this.bookStr);this.chapterList=t.getChapter(),this.chapterDocList=t.getChapterDoc();i=a.getKookitConfig("chapterTitle")||this.chapterDocList[0].title;ti(n,Ye(e)),ii(n,this.mode),ci(i,this.chapterDocList,this.element,this.mode),this.trigger("rendered"),r()}else r()}))})}getChapter(){return this.chapterList}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}goToChapter(t){ci(t,this.chapterDocList,this.element,this.mode),this.trigger("rendered")}goToPosition(t){var{text:e,chapterTitle:i,count:t}=JSON.parse(t);ci(i,this.chapterDocList,this.element,this.mode),ui(this.element,this.mode,e,t),this.record(),this.trigger("rendered")}prev(){return c(this,void 0,void 0,function*(){let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&("scroll"===this.mode||0===e.body.scrollLeft?(hi(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}removeContent(){this.element.innerHTML=""}next(){return c(this,void 0,void 0,function*(){let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&(Math.abs(e.body.scrollWidth-e.body.scrollLeft-e.body.clientWidth)<10||"scroll"===this.mode?(di(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,-1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}visibleText(){return gi(this.element,this.mode)}doSearch(t){return mi(t,this.chapterDocList)}flatChapter(t){return t}getProgress(){return ei()}record(){fi(this.element,this.mode)}getPosition(){return{text:a.getKookitConfig("text"),chapterTitle:a.getKookitConfig("chapterTitle"),count:a.getKookitConfig("count"),percentage:a.getKookitConfig("percentage")}}getMetadata(){return new Ci(this.azw3Buffer).getMetadata()}setStyle(e){let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;t&&t.body.setAttribute("style",e+t.body.getAttribute("style"))}}}},t.ComicRender=class extends bi{constructor(t,e,i,r,n){super(),this.isSliding=n||!1,this.mode=i,this.format=r,this.zip=e,this.dataSource=t,this.element="",this.parser="",this.chapterList=[],this.largestId=parseInt(a.getKookitConfig("count"))||0}renderTo(l,h=0){return new Promise((a,t)=>c(this,void 0,void 0,function*(){if(yield g()){this.element=l,ti(l),this.parser=new _i(this.dataSource,this.zip,this.mode,this.element,this.format),this.chapterList=this.parser.getChapter(),this.parser.renderComic(),yield this.renderImage(h);let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;if(t&&t.getElementById(h+"")){var r=yield this.parser.getImgRatio(),n=t.getElementById(h+"").clientWidth*r;let e=t.getElementsByTagName("img");var o,i=Math.floor(this.element.clientWidth/12),s=i%2==0?i:i-1;for(let t=0;tthis.element.clientHeight?(e[t].style.height=this.element.clientHeight+"px",e[t].style.width=this.element.clientHeight/r+"px",e[t].style.paddingLeft=(this.element.clientWidth-("single"===this.mode?0:s))/2/o-this.element.clientHeight/r/2+"px"):(e[t].style.height=n+"px",e[t].style.marginTop=this.element.clientHeight/2-n/2+"px"));ii(l,this.mode),Xe(l,this.mode),this.trigger("rendered"),a()}}}}else a()}))}flatChapter(t){return t}getProgress(){return{totalPage:this.chapterList.length,currentPage:parseInt(a.getKookitConfig("count"))||0}}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}renderImage(t){return c(this,void 0,void 0,function*(){yield this.parser.renderImage(t-3),yield this.parser.renderImage(t-2),yield this.parser.renderImage(t-1),yield this.parser.renderImage(t),yield this.parser.renderImage(t+1),yield this.parser.renderImage(t+2),yield this.parser.renderImage(t+3)})}getChapter(){return this.chapterList}goToPosition(t){var t=JSON.parse(t)["id"];Ei(this.element,this.mode,t),this.record()}goToChapter(t){return c(this,void 0,void 0,function*(){Ei(this.element,this.mode,this.dataSource.indexOf(t)+""),yield this.renderImage(this.dataSource.indexOf(t))})}record(){return c(this,void 0,void 0,function*(){fi(this.element,this.mode);var t=parseInt(a.getKookitConfig("count"))||0;yield this.parser.renderImage(t-3),yield this.parser.renderImage(t-2),yield this.parser.renderImage(t-1),yield this.parser.renderImage(t),yield this.parser.renderImage(t+1),yield this.parser.renderImage(t+2),yield this.parser.renderImage(t+3)})}removeContent(){this.element.innerHTML=""}prev(){return c(this,void 0,void 0,function*(){var t=parseInt(a.getKookitConfig("count"))||0;yield this.parser.renderImage(t),yield this.parser.renderImage(t-1),yield this.parser.renderImage(t-2),yield this.parser.renderImage(t-3),yield this.parser.renderImage(t-4),Si(this.element,1,this.isSliding),fi(this.element,this.mode)})}next(){return c(this,void 0,void 0,function*(){var t=parseInt(a.getKookitConfig("count"))||0;yield this.parser.renderImage(t),yield this.parser.renderImage(t+1),yield this.parser.renderImage(t+2),yield this.parser.renderImage(t+3),yield this.parser.renderImage(t+4),Si(this.element,-1,this.isSliding),fi(this.element,this.mode)})}getPosition(){return{text:a.getKookitConfig("text"),chapterTitle:a.getKookitConfig("chapterTitle"),count:a.getKookitConfig("count"),percentage:a.getKookitConfig("percentage")}}setStyle(e){let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;t&&t.body.setAttribute("style",e+t.body.getAttribute("style"))}}}},t.EpubRender=class extends bi{constructor(t,e,i){super(),this.epubBuffer=t,this.mode=e,this.isSliding=i||!1,this.chapterList=[],this.chapterDocList=[],this.bookStr="",this.element=""}renderTo(i,r){return c(this,void 0,void 0,function*(){return new Promise((t,e)=>c(this,void 0,void 0,function*(){(yield g())?(this.epub=window.ePub(this.epubBuffer,{}),this.element=i,this.rendition=this.epub.renderTo(this.element,{manager:"default",flow:"scroll"===this.mode?"scrolled":"auto",width:"100%",height:"100%",snap:!0,spread:"single"===this.mode?"none":""}),this.rendition.display(r).then(()=>{this.trigger("rendered"),t()}),this.rendition.on("rendered",()=>{this.trigger("rendered")})):t()}))})}getChapter(){return c(this,void 0,void 0,function*(){var t=yield this.epub.loaded.navigation;return t?(this.chapterList=t.toc,this.chapterList):[]})}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}flatChapter(e){let i=[];for(let t=0;t(t.label=t.label.trim(),t)),{label:t.trim()})])||void 0===t?void 0:t.href;this.rendition.display(t),this.trigger("rendered")}goToPosition(e){return c(this,void 0,void 0,function*(){var t=JSON.parse(e)||{};this.epub.rendition.display(t.cfi),yield this.record(),this.trigger("rendered")})}removeContent(){this.element.innerHTML=""}prev(){return c(this,void 0,void 0,function*(){this.rendition.prev(),yield this.record(),this.trigger("page-changed")})}next(){return c(this,void 0,void 0,function*(){this.rendition.next(),yield this.record(),this.trigger("page-changed")})}visibleText(){return c(this,void 0,void 0,function*(){const t=this.rendition.currentLocation();var e=t.start.cfi.replace(/!.*/,"").replace("epubcfi(",""),i=t.start.cfi.replace(/.*!/,"").replace(/\)/,""),r=t.end.cfi.replace(/.*!/,"").replace(/\)/,"");let n=yield this.epub.getRange(`epubcfi(${e}!,${i},${r})`);return n.toString()})}doSearch(e){return Promise.all(this.epub.spine.spineItems.map(t=>t.load(this.epub.load.bind(this.epub)).then(t.find.bind(t,e)).finally(t.unload.bind(t)))).then(t=>Promise.resolve([].concat.apply([],t).map(t=>(t.cfi=JSON.stringify({cfi:t.cfi}),t))))}getProgress(){return c(this,void 0,void 0,function*(){let t=this.rendition.currentLocation();return t.start||(yield this.epub.locations.generate(),t=this.rendition.currentLocation()),{currentPage:"double"===this.mode?parseInt(t.start.displayed.page/2+"")+1:t.start.displayed.page+1,totalPage:t.start.displayed.total}})}record(){return c(this,void 0,void 0,function*(){let t=this.rendition.currentLocation(),e=this.epub.locations._locations;t.start&&0!==e.length||(e=yield this.epub.locations.generate(),t=this.rendition.currentLocation());var i=t.start.cfi,r=this.epub.locations.percentageFromCfi(i);let n=t.start.href;this.flattenChapters||(this.flattenChapters=this.flatChapter(this.chapterList));let o="Unknown Chapter",s=this.flattenChapters.filter(t=>-1c(this,void 0,void 0,function*(){this.epub=window.ePub(this.epubBuffer,{});let t=yield this.epub.loaded.metadata;var e=yield this.epub.coverUrl(),e=yield fetch(e).then(t=>t.blob()),i=new FileReader;i.readAsDataURL(e),i.onloadend=()=>{t.cover=i.result,r(t)}}))}setStyle(t){this.rendition.themes.default(t)}},t.MobiRender=class extends bi{constructor(t,e,i){super(),this.mobiBuffer=t,this.mode=e,this.chapterList=[],this.chapterDocList=[],this.bookStr="",this.element="",this.isSliding=i||!1}renderTo(r){return new Promise((i,t)=>c(this,void 0,void 0,function*(){if(yield g()){var e=(yield new Ci(this.mobiBuffer).render()).outerHTML;this.bookStr=e,this.element=r;let t=new vi(this.bookStr);this.chapterDocList=t.getChapterDoc(),this.chapterList=t.getChapter();e=a.getKookitConfig("chapterTitle")||this.chapterDocList[0].title;ti(r),ii(r,this.mode),ci(e,this.chapterDocList,this.element,this.mode),this.trigger("rendered"),i()}else i()}))}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}flatChapter(t){return t}getChapter(){return this.chapterList}goToChapter(t){ci(t,this.chapterDocList,this.element,this.mode),this.trigger("rendered")}goToPosition(t){var{text:e,chapterTitle:i,count:t}=JSON.parse(t);ci(i,this.chapterDocList,this.element,this.mode),ui(this.element,this.mode,e,t),this.record(),this.trigger("rendered")}removeContent(){this.element.innerHTML=""}prev(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&("scroll"===this.mode||0===e.body.scrollLeft?(hi(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}next(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&(Math.abs(e.body.scrollWidth-e.body.scrollLeft-e.body.clientWidth)<10||"scroll"===this.mode?(di(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,-1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}visibleText(){return gi(this.element,this.mode)}doSearch(t){return mi(t,this.chapterDocList)}getProgress(){return ei()}record(){fi(this.element,this.mode)}getPosition(){return{text:a.getKookitConfig("text"),chapterTitle:a.getKookitConfig("chapterTitle"),count:a.getKookitConfig("count"),percentage:a.getKookitConfig("percentage")}}getMetadata(){return new Ci(this.mobiBuffer).getMetadata()}setStyle(e){let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;t&&t.body.setAttribute("style",e+t.body.getAttribute("style"))}}}},t.StrRender=class extends bi{constructor(t,e,i){super(),this.bookStr=t,this.mode=e,this.chapterList=[],this.chapterDocList=[],this.element="",this.isSliding=i||!1}renderTo(r){return new Promise((i,t)=>c(this,void 0,void 0,function*(){if(yield g()){this.element=r;let t=new yi(this.bookStr);this.chapterList=t.getChapter(),this.chapterDocList=t.getChapterDoc();var e=a.getKookitConfig("chapterTitle")||this.chapterDocList[0].title;ti(r),ci(e,this.chapterDocList,this.element,this.mode),ii(r,this.mode),this.trigger("rendered"),i()}else i()}))}getChapter(){return this.chapterList}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}goToChapter(t){ci(t,this.chapterDocList,this.element,this.mode),this.trigger("rendered")}goToPosition(t){var{text:e,chapterTitle:i,count:t}=JSON.parse(t);ci(i,this.chapterDocList,this.element,this.mode),ui(this.element,this.mode,e,t),this.record(),this.trigger("rendered")}record(){fi(this.element,this.mode)}removeContent(){this.element.innerHTML=""}flatChapter(t){return t}prev(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&("scroll"===this.mode||0===e.body.scrollLeft?(hi(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}next(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&(Math.abs(e.body.scrollWidth-e.body.scrollLeft-e.body.clientWidth)<10||"scroll"===this.mode?(di(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,-1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}visibleText(){return gi(this.element,this.mode)}doSearch(t){return mi(t,this.chapterDocList)}getProgress(){return ei()}getPosition(){return{text:a.getKookitConfig("text"),chapterTitle:a.getKookitConfig("chapterTitle"),count:a.getKookitConfig("count"),percentage:a.getKookitConfig("percentage")}}setStyle(e){let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;t&&t.body.setAttribute("style",e+t.body.getAttribute("style"))}}}},t.TxtRender=class extends bi{constructor(t,e,i="utf-8",r){super(),this.txtBuffer=t,this.encoding=i,this.mode=e,this.chapterList=[],this.chapterDocList=[],this.bookStr="",this.element="",this.isSliding=r||!1}renderTo(r){return new Promise((i,t)=>c(this,void 0,void 0,function*(){if(yield g()){var e=(t=>{let e="",i=!1;var r;for(r of t.split("\n"))r.trim()&&(l(r.trim(),i)?((r.trim().startsWith("第")||r.trim().startsWith("Chapter")||r.trim().startsWith("CHAPTER"))&&(i=!0),e+=`

${r}

`):e+=`

${r}

`);return e})(new TextDecoder(this.encoding).decode(this.txtBuffer));this.bookStr=e,this.element=r;let t=new ki(this.bookStr);this.chapterList=t.getChapter(),this.chapterDocList=t.getChapterDoc();e=a.getKookitConfig("chapterTitle")||this.chapterDocList[0].title;ti(r),ii(r,this.mode),ci(e,this.chapterDocList,this.element,this.mode),this.trigger("rendered"),i()}else i()}))}getChapter(){return this.chapterList}goToChapter(t){ci(t,this.chapterDocList,this.element,this.mode),this.trigger("rendered")}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}goToPosition(t){var{text:e,chapterTitle:i,count:t}=JSON.parse(t);ci(i,this.chapterDocList,this.element,this.mode),ui(this.element,this.mode,e,t),this.record(),this.trigger("rendered")}record(){fi(this.element,this.mode)}removeContent(){this.element.innerHTML=""}flatChapter(t){return t}prev(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&("scroll"===this.mode||0===e.body.scrollLeft?(hi(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}next(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&(Math.abs(e.body.scrollWidth-e.body.scrollLeft-e.body.clientWidth)<10||"scroll"===this.mode?(di(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,-1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}visibleText(){return gi(this.element,this.mode)}doSearch(t){return mi(t,this.chapterDocList)}getProgress(){return ei()}getPosition(){return{text:a.getKookitConfig("text"),chapterTitle:a.getKookitConfig("chapterTitle"),count:a.getKookitConfig("count"),percentage:a.getKookitConfig("percentage")}}setStyle(e){let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;t&&t.body.setAttribute("style",e+t.body.getAttribute("style"))}}}},Object.defineProperty(t,"__esModule",{value:!0})}); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Kookit={})}(this,function(t){"use strict";function c(t,s,a,l){return new(a=a||Promise)(function(i,e){function r(t){try{o(l.next(t))}catch(t){e(t)}}function n(t){try{o(l.throw(t))}catch(t){e(t)}}function o(t){var e;t.done?i(t.value):((e=t.value)instanceof a?e:new a(function(t){t(e)})).then(r,n)}o((l=l.apply(t,s||[])).next())})}class a{static getKookitConfig(t){return(JSON.parse(localStorage.getItem("kookitConfig"))||{})[t]}static setKookitConfig(t,e){let i=JSON.parse(localStorage.getItem("kookitConfig"))||{};i[t]=e,localStorage.setItem("kookitConfig",JSON.stringify(i))}static removeKookitConfig(){localStorage.removeItem("kookitConfig")}}let r=["章","节","回","節","卷","部","輯","辑","話","集","话","篇"];String.prototype.contains=function(t){return-1t&&!t.contains("[")&&!t.contains("(")&&!t.contains("。")&&!t.contains("“")&&!t.contains("‘")&&!t.contains(";")&&!t.contains(";")&&(t.startsWith("CHAPTER")||t.startsWith("Chapter")||t.startsWith("序章")||t.startsWith("前言")||t.startsWith("声明")||t.startsWith("聲明")||t.startsWith("写在前面的话")||t.startsWith("后记")||t.startsWith("楔子")||t.startsWith("后序")||t.startsWith("寫在前面的話")||t.startsWith("後記")||t.startsWith("後序")||t.startsWith("第")&&i(t)||t.startsWith("卷")&&n(t)||!e&&t.contains("第")&&(" "===t[t.indexOf("第")-1]||" "===t[t.indexOf("第")-1]||"、"===t[t.indexOf("第")-1]||":"===t[t.indexOf("第")-1]||":"===t[t.indexOf("第")-1])&&i(t.substr(t.indexOf("第")))||!e&&t.indexOf(" ")&&o(t)||!e&&t.indexOf(" ")&&o(t)||!e&&t.indexOf("、")&&h(t)||!e&&t.indexOf(":")&&s(t)||!e&&t.indexOf(":")&&s(t)),i=e=>{let i=!1;for(let t=0;t!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(1,t.indexOf(" ")))&&!/^\d+$/.test(t.substring(1,t.indexOf(" "))))||(!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(1,t.indexOf(" ")))&&!/^\d+$/.test(t.substring(1,t.indexOf(" "))))||!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(1))&&!/^\d+$/.test(t.substring(1)))),o=t=>!!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(0,t.indexOf(" ")))||(!!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(0,t.indexOf(" ")))||(!!/^\d+$/.test(t.substring(0,t.indexOf(" ")))||!!/^\d+$/.test(t.substring(0,t.indexOf(" "))))),s=t=>!!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(0,t.indexOf(":")))||(!!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(0,t.indexOf(":")))||(!!/^\d+$/.test(t.substring(0,t.indexOf(":")))||!!/^\d+$/.test(t.substring(0,t.indexOf(":"))))),h=t=>!!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c]+$/.test(t.substring(0,t.indexOf("、")))||!!/^\d+$/.test(t.substring(0,t.indexOf("、"))),u=t=>"♦"===t.trim()||"●"===t.trim()||"◾"===t.trim()||"◀"===t.trim()||"◼"===t.trim()||"■"===t.trim(),f=t=>"|"===t.trim()||"Next"===t.trim()||"Main menu"===t.trim()||"Section menu"===t.trim()||"Previous"===t.trim();var d=window;window.a=window.atob;String.prototype.c=function(t){return-1c(void 0,void 0,void 0,function*(){a.removeKookitConfig();let t=yield new Promise((t,e)=>{t(d.e(d.a("ZG9jdW1lbnQudGl0bGU"+String.fromCharCode(61))))});return!!t.c(d.a("ZG8gUmU"+String.fromCharCode(61)))});var e="1.13.1",m="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},p=Array.prototype,v=Object.prototype,y="undefined"!=typeof Symbol?Symbol.prototype:null,b=p.push,x=p.slice,L=v.toString,T=v.hasOwnProperty,w="undefined"!=typeof ArrayBuffer,C="undefined"!=typeof DataView,k=Array.isArray,D=Object.keys,_=Object.create,S=w&&ArrayBuffer.isView,E=isNaN,B=isFinite,I=!{toString:null}.propertyIsEnumerable("toString"),O=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],A=Math.pow(2,53)-1;function N(n,o){return o=null==o?n.length-1:+o,function(){for(var t=Math.max(arguments.length-o,0),e=Array(t),i=0;i":">",'"':""","'":"'","`":"`"},re=ee(ie),ne=ee(At(ie)),oe=pt.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},se=/(.)^/,ae={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},le=/\\|'|\r|\n|\u2028|\u2029/g;function he(t){return"\\"+ae[t]}var ce=/^\s*(\w|\$)+\s*$/;var ue=0;function fe(t,e,i,r,n){if(!(r instanceof e))return t.apply(i,n);i=jt(t.prototype),n=t.apply(i,n);return M(n)?n:i}var de=N(function(n,o){function s(){for(var t=0,e=o.length,i=Array(e),r=0;r{let r=document.getElementById("page-area");if(r){let t=r.getElementsByTagName("iframe")[0];var n;t&&("scroll"===i?(n=t.contentDocument)&&(i=n.body,n=n.documentElement,t.height=2*Math.max(i.scrollHeight,i.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)+"px",setTimeout(()=>{let t=document.getElementById("page-area");if(t){let r=t.getElementsByTagName("iframe")[0];if(r){var n=r.contentDocument;if(n){let t=n.body;var o=t.lastElementChild,s=t.lastChild,a=t.getElementsByTagName("a"),l=t.getElementsByTagName("p"),h=t.getElementsByTagName("img"),c=t.getElementsByTagName("div"),n=a[a.length-1],a=l[l.length-1],h=l[h.length-1],c=c[c.length-1];let e=a||n||h||c;Qe.isElement(n)&&Qe.isElement(a)&&Qe.isElement(c)&&(e=n.clientHeight+n.offsetTop>a.clientHeight+a.offsetTop?n:a,c.clientHeight+c.offsetTop>e.clientHeight+e.offsetTop&&(e=c)),Qe.isElement(h)&&h.clientHeight+h.offsetTop>e.clientHeight+e.offsetTop&&(e=h);let i=0;if((o||e||s)&&(3!==s.nodeType||o||e)){if(3===s.nodeType&&document.createRange){let t=document.createRange();t.selectNodeContents(s),!t.getBoundingClientRect||(h=t.getBoundingClientRect())&&(i=h.bottom-h.top)}s=Math.max(Qe.isElement(o)?o.clientHeight+o.offsetTop:0,Qe.isElement(s)?s.clientHeight+s.offsetTop:0,Qe.isElement(e)?e.clientHeight+e.offsetTop:0)+400+(3===s.nodeType?i:0);r.height=s+"px"}}}}},500)):t.height=e.offsetHeight+"px")}},Ye=t=>{var e;let i="";return t.lastChild&&null!==(e=t.lastChild)&&void 0!==e&&e.lastChild&&!(e=>{try{return e instanceof HTMLElement}catch(t){return typeof e==="object"&&e.nodeType===1&&typeof e.style==="object"&&typeof e.ownerDocument==="object"}})(null===(e=t.lastChild)||void 0===e?void 0:e.lastChild)&&(i=(null===(t=t.lastChild)||void 0===t?void 0:t.lastChild.textContent)||""),i},ti=(t,e="")=>{var i=document.createElement("iframe");if(i.style.width="100%",i.style.border="0",i.style.margin="0",i.style.padding="0",i.style.fontSize="100%",i.style.font="inherit",i.style.verticalAlign="baseline",t.innerHTML="",t.appendChild(i),e&&i.contentDocument){let t=i.contentDocument.createElement("style");t.id="azw3-style",t.textContent=e,i.contentDocument.head.appendChild(t)}},ei=()=>{let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){e=e.contentDocument;if(e)return{totalPage:parseInt(e.body.scrollWidth/e.body.clientWidth+"")+1,currentPage:parseInt(e.body.scrollLeft/e.body.clientWidth+"")+1}}}},ii=(i,r)=>{let t=document.getElementById("page-area");if(t){var n=t.getElementsByTagName("iframe")[0];if(n){let e=n.contentDocument;if(e){let t=e.createElement("style");t.id="default-style",t.textContent="p,empty-line{display: inherit;margin-block-start: inherit;margin-block-end: inherit;margin-inline-start: inherit;margin-inline-end: inherit;}body{margin: 0px}",e.head.appendChild(t),"scroll"!==r&&(n="double"===r?2:1,r=(r=Math.floor(i.clientWidth/12))%2==0?r:r-1,e.body.setAttribute("style",`width: auto;height: 100%;overflow-y: hidden;overflow-X: hidden;padding-left: 0px;padding-right: 0px;margin: 0px;box-sizing: border-box;max-width: inherit;column-fill: auto;column-gap: ${r}px;column-count: 12;column-width: ${(i.offsetWidth-r)/n}px;`))}}}};var ie={S:"万与丑专业丛东丝丢两严丧个丬丰临为丽举么义乌乐乔习乡书买乱争于亏云亘亚产亩亲亵亸亿仅从仑仓仪们价众优伙会伛伞伟传伤伥伦伧伪伫体余佣佥侠侣侥侦侧侨侩侪侬俣俦俨俩俪俭债倾偬偻偾偿傥傧储傩儿兑兖党兰关兴兹养兽冁内冈册写军农冢冯冲决况冻净凄凉凌减凑凛几凤凫凭凯击凼凿刍划刘则刚创删别刬刭刽刿剀剂剐剑剥剧劝办务劢动励劲劳势勋勐勚匀匦匮区医华协单卖卢卤卧卫却卺厂厅历厉压厌厍厕厢厣厦厨厩厮县参叆叇双发变叙叠叶号叹叽吁后吓吕吗吣吨听启吴呒呓呕呖呗员呙呛呜咏咔咙咛咝咤咴咸哌响哑哒哓哔哕哗哙哜哝哟唛唝唠唡唢唣唤唿啧啬啭啮啰啴啸喷喽喾嗫呵嗳嘘嘤嘱噜噼嚣嚯团园囱围囵国图圆圣圹场坂坏块坚坛坜坝坞坟坠垄垅垆垒垦垧垩垫垭垯垱垲垴埘埙埚埝埯堑堕塆墙壮声壳壶壸处备复够头夸夹夺奁奂奋奖奥妆妇妈妩妪妫姗姜娄娅娆娇娈娱娲娴婳婴婵婶媪嫒嫔嫱嬷孙学孪宁宝实宠审宪宫宽宾寝对寻导寿将尔尘尧尴尸尽层屃屉届属屡屦屿岁岂岖岗岘岙岚岛岭岳岽岿峃峄峡峣峤峥峦崂崃崄崭嵘嵚嵛嵝嵴巅巩巯币帅师帏帐帘帜带帧帮帱帻帼幂幞干并广庄庆庐庑库应庙庞废庼廪开异弃张弥弪弯弹强归当录彟彦彻径徕御忆忏忧忾怀态怂怃怄怅怆怜总怼怿恋恳恶恸恹恺恻恼恽悦悫悬悭悯惊惧惨惩惫惬惭惮惯愍愠愤愦愿慑慭憷懑懒懔戆戋戏戗战戬户扎扑扦执扩扪扫扬扰抚抛抟抠抡抢护报担拟拢拣拥拦拧拨择挂挚挛挜挝挞挟挠挡挢挣挤挥挦捞损捡换捣据捻掳掴掷掸掺掼揸揽揿搀搁搂搅携摄摅摆摇摈摊撄撑撵撷撸撺擞攒敌敛数斋斓斗斩断无旧时旷旸昙昼昽显晋晒晓晔晕晖暂暧札术朴机杀杂权条来杨杩杰极构枞枢枣枥枧枨枪枫枭柜柠柽栀栅标栈栉栊栋栌栎栏树栖样栾桊桠桡桢档桤桥桦桧桨桩梦梼梾检棂椁椟椠椤椭楼榄榇榈榉槚槛槟槠横樯樱橥橱橹橼檐檩欢欤欧歼殁殇残殒殓殚殡殴毁毂毕毙毡毵氇气氢氩氲汇汉污汤汹沓沟没沣沤沥沦沧沨沩沪沵泞泪泶泷泸泺泻泼泽泾洁洒洼浃浅浆浇浈浉浊测浍济浏浐浑浒浓浔浕涂涌涛涝涞涟涠涡涢涣涤润涧涨涩淀渊渌渍渎渐渑渔渖渗温游湾湿溃溅溆溇滗滚滞滟滠满滢滤滥滦滨滩滪漤潆潇潋潍潜潴澜濑濒灏灭灯灵灾灿炀炉炖炜炝点炼炽烁烂烃烛烟烦烧烨烩烫烬热焕焖焘煅煳熘爱爷牍牦牵牺犊犟状犷犸犹狈狍狝狞独狭狮狯狰狱狲猃猎猕猡猪猫猬献獭玑玙玚玛玮环现玱玺珉珏珐珑珰珲琎琏琐琼瑶瑷璇璎瓒瓮瓯电画畅畲畴疖疗疟疠疡疬疮疯疱疴痈痉痒痖痨痪痫痴瘅瘆瘗瘘瘪瘫瘾瘿癞癣癫癯皑皱皲盏盐监盖盗盘眍眦眬着睁睐睑瞒瞩矫矶矾矿砀码砖砗砚砜砺砻砾础硁硅硕硖硗硙硚确硷碍碛碜碱碹磙礼祎祢祯祷祸禀禄禅离秃秆种积称秽秾稆税稣稳穑穷窃窍窑窜窝窥窦窭竖竞笃笋笔笕笺笼笾筑筚筛筜筝筹签简箓箦箧箨箩箪箫篑篓篮篱簖籁籴类籼粜粝粤粪粮糁糇紧絷纟纠纡红纣纤纥约级纨纩纪纫纬纭纮纯纰纱纲纳纴纵纶纷纸纹纺纻纼纽纾线绀绁绂练组绅细织终绉绊绋绌绍绎经绐绑绒结绔绕绖绗绘给绚绛络绝绞统绠绡绢绣绤绥绦继绨绩绪绫绬续绮绯绰绱绲绳维绵绶绷绸绹绺绻综绽绾绿缀缁缂缃缄缅缆缇缈缉缊缋缌缍缎缏缐缑缒缓缔缕编缗缘缙缚缛缜缝缞缟缠缡缢缣缤缥缦缧缨缩缪缫缬缭缮缯缰缱缲缳缴缵罂网罗罚罢罴羁羟羡翘翙翚耢耧耸耻聂聋职聍联聩聪肃肠肤肷肾肿胀胁胆胜胧胨胪胫胶脉脍脏脐脑脓脔脚脱脶脸腊腌腘腭腻腼腽腾膑臜舆舣舰舱舻艰艳艹艺节芈芗芜芦苁苇苈苋苌苍苎苏苘苹茎茏茑茔茕茧荆荐荙荚荛荜荞荟荠荡荣荤荥荦荧荨荩荪荫荬荭荮药莅莜莱莲莳莴莶获莸莹莺莼萚萝萤营萦萧萨葱蒇蒉蒋蒌蓝蓟蓠蓣蓥蓦蔷蔹蔺蔼蕲蕴薮藁藓虏虑虚虫虬虮虽虾虿蚀蚁蚂蚕蚝蚬蛊蛎蛏蛮蛰蛱蛲蛳蛴蜕蜗蜡蝇蝈蝉蝎蝼蝾螀螨蟏衅衔补衬衮袄袅袆袜袭袯装裆裈裢裣裤裥褛褴襁襕见观觃规觅视觇览觉觊觋觌觍觎觏觐觑觞触觯詟誉誊讠计订讣认讥讦讧讨让讪讫训议讯记讱讲讳讴讵讶讷许讹论讻讼讽设访诀证诂诃评诅识诇诈诉诊诋诌词诎诏诐译诒诓诔试诖诗诘诙诚诛诜话诞诟诠诡询诣诤该详诧诨诩诪诫诬语诮误诰诱诲诳说诵诶请诸诹诺读诼诽课诿谀谁谂调谄谅谆谇谈谊谋谌谍谎谏谐谑谒谓谔谕谖谗谘谙谚谛谜谝谞谟谠谡谢谣谤谥谦谧谨谩谪谫谬谭谮谯谰谱谲谳谴谵谶谷豮贝贞负贠贡财责贤败账货质贩贪贫贬购贮贯贰贱贲贳贴贵贶贷贸费贺贻贼贽贾贿赀赁赂赃资赅赆赇赈赉赊赋赌赍赎赏赐赑赒赓赔赕赖赗赘赙赚赛赜赝赞赟赠赡赢赣赪赵赶趋趱趸跃跄跖跞践跶跷跸跹跻踊踌踪踬踯蹑蹒蹰蹿躏躜躯车轧轨轩轪轫转轭轮软轰轱轲轳轴轵轶轷轸轹轺轻轼载轾轿辀辁辂较辄辅辆辇辈辉辊辋辌辍辎辏辐辑辒输辔辕辖辗辘辙辚辞辩辫边辽达迁过迈运还这进远违连迟迩迳迹适选逊递逦逻遗遥邓邝邬邮邹邺邻郁郄郏郐郑郓郦郧郸酝酦酱酽酾酿释里鉅鉴銮錾钆钇针钉钊钋钌钍钎钏钐钑钒钓钔钕钖钗钘钙钚钛钝钞钟钠钡钢钣钤钥钦钧钨钩钪钫钬钭钮钯钰钱钲钳钴钵钶钷钸钹钺钻钼钽钾钿铀铁铂铃铄铅铆铈铉铊铋铍铎铏铐铑铒铕铗铘铙铚铛铜铝铞铟铠铡铢铣铤铥铦铧铨铪铫铬铭铮铯铰铱铲铳铴铵银铷铸铹铺铻铼铽链铿销锁锂锃锄锅锆锇锈锉锊锋锌锍锎锏锐锑锒锓锔锕锖锗错锚锜锞锟锠锡锢锣锤锥锦锨锩锫锬锭键锯锰锱锲锳锴锵锶锷锸锹锺锻锼锽锾锿镀镁镂镃镆镇镈镉镊镌镍镎镏镐镑镒镕镖镗镙镚镛镜镝镞镟镠镡镢镣镤镥镦镧镨镩镪镫镬镭镮镯镰镱镲镳镴镶长门闩闪闫闬闭问闯闰闱闲闳间闵闶闷闸闹闺闻闼闽闾闿阀阁阂阃阄阅阆阇阈阉阊阋阌阍阎阏阐阑阒阓阔阕阖阗阘阙阚阛队阳阴阵阶际陆陇陈陉陕陧陨险随隐隶隽难雏雠雳雾霁霉霭靓静靥鞑鞒鞯鞴韦韧韨韩韪韫韬韵页顶顷顸项顺须顼顽顾顿颀颁颂颃预颅领颇颈颉颊颋颌颍颎颏颐频颒颓颔颕颖颗题颙颚颛颜额颞颟颠颡颢颣颤颥颦颧风飏飐飑飒飓飔飕飖飗飘飙飚飞飨餍饤饥饦饧饨饩饪饫饬饭饮饯饰饱饲饳饴饵饶饷饸饹饺饻饼饽饾饿馀馁馂馃馄馅馆馇馈馉馊馋馌馍馎馏馐馑馒馓馔馕马驭驮驯驰驱驲驳驴驵驶驷驸驹驺驻驼驽驾驿骀骁骂骃骄骅骆骇骈骉骊骋验骍骎骏骐骑骒骓骔骕骖骗骘骙骚骛骜骝骞骟骠骡骢骣骤骥骦骧髅髋髌鬓魇魉鱼鱽鱾鱿鲀鲁鲂鲄鲅鲆鲇鲈鲉鲊鲋鲌鲍鲎鲏鲐鲑鲒鲓鲔鲕鲖鲗鲘鲙鲚鲛鲜鲝鲞鲟鲠鲡鲢鲣鲤鲥鲦鲧鲨鲩鲪鲫鲬鲭鲮鲯鲰鲱鲲鲳鲴鲵鲶鲷鲸鲹鲺鲻鲼鲽鲾鲿鳀鳁鳂鳃鳄鳅鳆鳇鳈鳉鳊鳋鳌鳍鳎鳏鳐鳑鳒鳓鳔鳕鳖鳗鳘鳙鳛鳜鳝鳞鳟鳠鳡鳢鳣鸟鸠鸡鸢鸣鸤鸥鸦鸧鸨鸩鸪鸫鸬鸭鸮鸯鸰鸱鸲鸳鸴鸵鸶鸷鸸鸹鸺鸻鸼鸽鸾鸿鹀鹁鹂鹃鹄鹅鹆鹇鹈鹉鹊鹋鹌鹍鹎鹏鹐鹑鹒鹓鹔鹕鹖鹗鹘鹚鹛鹜鹝鹞鹟鹠鹡鹢鹣鹤鹥鹦鹧鹨鹩鹪鹫鹬鹭鹯鹰鹱鹲鹳鹴鹾麦麸黄黉黡黩黪黾鼋鼌鼍鼗鼹齄齐齑齿龀龁龂龃龄龅龆龇龈龉龊龋龌龙龚龛龟志制咨只里系范松没尝尝闹面准钟别闲乾尽脏拼",T:"萬與醜專業叢東絲丟兩嚴喪個爿豐臨為麗舉麽義烏樂喬習鄉書買亂爭於虧雲亙亞產畝親褻亸億僅從侖倉儀們價眾優夥會傴傘偉傳傷倀倫傖偽佇體余傭僉俠侶僥偵側僑儈儕儂俁儔儼倆儷儉債傾傯僂僨償儻儐儲儺兒兌兗黨蘭關興茲養獸囅內岡冊寫軍農冢馮沖決況凍凈淒涼淩減湊凜幾鳳鳧憑凱擊氹鑿芻劃劉則剛創刪別刬剄劊劌剴劑剮劍剝劇勸辦務勱動勵勁勞勢勛猛勚勻匭匱區醫華協單賣盧鹵臥衛卻巹廠廳歷厲壓厭厙廁廂厴廈廚廄廝縣參叆叇雙發變敘叠葉號嘆嘰籲後嚇呂嗎唚噸聽啟吳嘸囈嘔嚦唄員咼嗆嗚詠哢嚨嚀噝咤噅鹹哌響啞噠嘵嗶噦嘩噲嚌噥喲嘜唝嘮唡嗩唣喚唿嘖嗇囀嚙啰啴嘯噴嘍嚳囁呵噯噓嚶囑嚕劈囂謔團園囪圍圇國圖圓聖壙場阪壞塊堅壇壢壩塢墳墜壟壟壚壘墾坰堊墊埡垯垱塏堖塒塤堝墊垵塹墮塆墻壯聲殼壺壸處備復夠頭誇夾奪奩奐奮獎奧妝婦媽嫵嫗媯姍姜婁婭嬈嬌孌娛媧嫻婳嬰嬋嬸媼嬡嬪嬙嬤孫學孿寧寶實寵審憲宮寬賓寢對尋導壽將爾塵堯尷屍盡層屃屜屆屬屢屨嶼歲豈嶇崗峴嶴嵐島嶺嶽崠巋峃嶧峽峣嶠崢巒嶗崍崄嶄嶸嵚崳嶁脊巔鞏巰幣帥師幃帳簾幟帶幀幫幬幘幗冪襆幹並廣莊慶廬廡庫應廟龐廢庼廩開異棄張彌弳彎彈強歸當錄彟彥徹徑徠禦憶懺憂愾懷態慫憮慪悵愴憐總懟懌戀懇惡慟懨愷惻惱惲悅愨懸慳憫驚懼慘懲憊愜慚憚慣湣慍憤憒願懾慭怵懣懶懍戇戔戲戧戰戩戶紮撲扡執擴捫掃揚擾撫拋摶摳掄搶護報擔擬攏揀擁攔擰撥擇掛摯攣挜撾撻挾撓擋撟掙擠揮挦撈損撿換搗據撚擄摑擲撣摻摜摣攬撳攙擱摟攪攜攝攄擺搖擯攤攖撐攆擷擼攛擻攢敵斂數齋斕鬥斬斷無舊時曠旸曇晝昽顯晉曬曉曄暈暉暫曖劄術樸機殺雜權條來楊榪傑極構樅樞棗櫪梘棖槍楓梟櫃檸檉梔柵標棧櫛櫳棟櫨櫟欄樹棲樣欒棬椏橈楨檔榿橋樺檜槳樁夢梼梾檢欞槨櫝槧欏橢樓欖櫬櫚櫸槚檻檳櫧橫檣櫻櫫櫥櫓櫞檐檁歡歟歐殲歿殤殘殞殮殫殯毆毀轂畢斃氈毿氌氣氫氬氳匯漢汙湯洶沓溝沒灃漚瀝淪滄沨溈滬沵濘淚澩瀧瀘濼瀉潑澤涇潔灑窪浹淺漿澆湞浉濁測澮濟瀏浐渾滸濃潯浕塗湧濤澇淶漣潿渦涢渙滌潤澗漲澀澱淵淥漬瀆漸澠漁瀋滲溫遊灣濕潰濺漵溇潷滾滯灩灄滿瀅濾濫灤濱灘滪濫瀠瀟瀲濰潛瀦瀾瀨瀕灝滅燈靈災燦煬爐燉煒熗點煉熾爍爛烴燭煙煩燒燁燴燙燼熱煥燜燾煆糊溜愛爺牘牦牽犧犢犟狀獷獁猶狽麅狝獰獨狹獅獪猙獄猻獫獵獼玀豬貓猬獻獺璣玙玚瑪瑋環現玱璽瑉玨琺瓏珰琿琎璉瑣瓊瑤璦璇瓔瓚甕甌電畫暢畬疇癤療瘧癘瘍癧瘡瘋皰屙癰痙癢瘂癆瘓癇癡癉瘆瘞瘺癟癱癮癭癩癬癲臒皚皺皸盞鹽監蓋盜盤瞘眥眬著睜睞瞼瞞矚矯磯礬礦碭碼磚硨硯碸礪礱礫礎硁矽碩硤磽硙硚確鹼礙磧磣堿碹滾禮祎禰禎禱禍稟祿禪離禿稈種積稱穢秾穭稅穌穩穡窮竊竅窯竄窩窺竇窶豎競篤筍筆筧箋籠籩築篳篩筜箏籌簽簡箓簀篋籜籮簞簫簣簍籃籬籪籟糴類秈糶糲粵糞糧糝糇緊縶糸糾紆紅紂纖紇約級紈纊紀紉緯紜纮純紕紗綱納纴縱綸紛紙紋紡纻纼紐紓線紺紲紱練組紳細織終縐絆紼絀紹繹經紿綁絨結絝繞绖絎繪給絢絳絡絕絞統綆綃絹繡绤綏絳繼綈績緒綾绬續綺緋綽緔緄繩維綿綬繃綢绹綹綣綜綻綰綠綴緇緙緗緘緬纜緹緲緝缊繢緦綞緞緶缐緱縋緩締縷編緡緣縉縛縟縝縫缞縞纏縭縊縑繽縹縵縲纓縮繆繅纈繚繕繒韁繾繰繯繳纘罌網羅罰罷羆羈羥羨翹翙翚耮耬聳恥聶聾職聹聯聵聰肅腸膚膁腎腫脹脅膽勝朧腖臚脛膠脈膾臟臍腦膿臠腳脫腡臉臘腌腘腭膩靦膃騰臏臜輿艤艦艙艫艱艷艹藝節羋薌蕪蘆蓯葦藶莧萇蒼苧蘇檾蘋莖蘢蔦塋煢繭荊薦荙莢蕘蓽蕎薈薺蕩榮葷滎犖熒蕁藎蓀蔭蕒葒葤藥蒞蓧萊蓮蒔萵薟獲蕕瑩鶯蒓萚蘿螢營縈蕭薩蔥蕆蕢蔣蔞藍薊蘺蕷鎣驀薔蘞藺藹蘄蘊藪槁蘚虜慮虛蟲虬蟣雖蝦蠆蝕蟻螞蠶蠔蜆蠱蠣蟶蠻蟄蛺蟯螄蠐蛻蝸蠟蠅蟈蟬蠍螻蠑螀蟎蟏釁銜補襯袞襖裊袆襪襲袯裝襠裈褳襝褲襇褸襤繈襕見觀觃規覓視覘覽覺覬覡覿觍覦覯覲覷觴觸觶詟譽謄訁計訂訃認譏訐訌討讓訕訖訓議訊記讱講諱謳詎訝訥許訛論讻訟諷設訪訣證詁訶評詛識诇詐訴診詆謅詞詘詔诐譯詒誆誄試詿詩詰詼誠誅詵話誕詬詮詭詢詣諍該詳詫諢詡诪誡誣語誚誤誥誘誨誑說誦誒請諸諏諾讀諑誹課諉諛誰諗調諂諒諄誶談誼謀諶諜謊諫諧謔謁謂諤諭諼讒諮諳諺諦謎諞谞謨讜謖謝謠謗謚謙謐謹謾謫譾謬譚譖譙讕譜譎讞譴譫讖谷豮貝貞負贠貢財責賢敗賬貨質販貪貧貶購貯貫貳賤賁貰貼貴貺貸貿費賀貽賊贄賈賄貲賃賂贓資賅贐賕賑賚賒賦賭賫贖賞賜赑赒賡賠賧賴赗贅賻賺賽賾贗贊赟贈贍贏贛赪趙趕趨趲躉躍蹌跖躒踐跶蹺蹕躚躋踴躊蹤躓躑躡蹣躕躥躪躦軀車軋軌軒轪軔轉軛輪軟轟軲軻轤軸軹軼軤軫轢軺輕軾載輊轎辀輇輅較輒輔輛輦輩輝輥輞辌輟輜輳輻輯辒輸轡轅轄輾轆轍轔辭辯辮邊遼達遷過邁運還這進遠違連遲邇逕跡適選遜遞邐邏遺遙鄧鄺鄔郵鄒鄴鄰郁郤郟鄶鄭鄆酈鄖鄲醞酦醬釅釃釀釋裏鉅鑒鑾鏨釓釔針釘釗釙釕釷釬釧釤钑釩釣鍆釹钖釵钘鈣鈈鈦鈍鈔鐘鈉鋇鋼鈑鈐鑰欽鈞鎢鉤鈧鈁鈥鈄鈕鈀鈺錢鉦鉗鈷缽鈳鉕鈽鈸鉞鉆鉬鉭鉀鈿鈾鐵鉑鈴鑠鉛鉚鈰鉉鉈鉍鈹鐸铏銬銠鉺銪鋏鋣鐃铚鐺銅鋁銱銦鎧鍘銖銑鋌銩铦鏵銓鉿銚鉻銘錚銫鉸銥鏟銃鐋銨銀銣鑄鐒鋪铻錸鋱鏈鏗銷鎖鋰鋥鋤鍋鋯鋨銹銼鋝鋒鋅鋶鐦鐧銳銻鋃鋟鋦錒錆鍺錯錨锜錁錕锠錫錮鑼錘錐錦鍁錈錇錟錠鍵鋸錳錙鍥锳鍇鏘鍶鍔鍤鍬鍾鍛鎪锽鍰鎄鍍鎂鏤镃鏌鎮镈鎘鑷鐫鎳鎿鎦鎬鎊鎰镕鏢鏜鏍镚鏞鏡鏑鏃鏇镠鐔鐝鐐鏷鑥鐓鑭鐠鑹鏹鐙鑊鐳镮鐲鐮鐿鑔鑣镴鑲長門閂閃閆闬閉問闖閏闈閑閎間閔閌悶閘鬧閨聞闥閩閭闿閥閣閡閫鬮閱閬阇閾閹閶鬩閿閽閻閼闡闌闃阓闊闋闔闐阘闕闞阛隊陽陰陣階際陸隴陳陘陜隉隕險隨隱隸雋難雛讎靂霧霽黴靄靚靜靨韃鞽韉韝韋韌韨韓韙韞韜韻頁頂頃頇項順須頊頑顧頓頎頒頌頏預顱領頗頸頡頰颋頜潁颎頦頤頻颒頹頷颕穎顆題颙顎顓顏額顳顢顛顙顥颣顫顬顰顴風飏飐颮颯颶飔颼飖飗飄飆飈飛饗饜饤饑饦餳飩餼飪飫飭飯飲餞飾飽飼饳飴餌饒餉饸饹餃饻餅餑饾餓餘餒馂馃餛餡館餷饋馉餿饞馌饃馎餾饈饉饅饊饌饢馬馭馱馴馳驅驲駁驢駔駛駟駙駒騶駐駝駑駕驛駘驍罵骃驕驊駱駭駢骉驪騁驗骍骎駿騏騎騍騅骔骕驂騙騭骙騷騖驁騮騫騸驃騾驄驏驟驥骦驤髏髖髕鬢魘魎魚鱽鱾魷鲀魯魴鲄鮁鮃鮎鱸鲉鲊鮒鲌鮑鱟鲏鮐鮭鮚鲓鮪鮞鲖鲗鲘鲙鱭鮫鮮鲝鯗鱘鯁鱺鰱鰹鯉鰣鰷鯀鯊鯇鲪鯽鲬鯖鯪鲯鯫鯡鯤鯧鯝鯢鯰鯛鯨鲹鯴鯔鱝鰈鲾鲿鳀鳁鳂鰓鱷鰍鰒鰉鳈鳉鯿鰠鰲鰭鰨鰥鰩鳑鳒鰳鰾鱈鱉鰻鰵鱅鳛鱖鱔鱗鱒鳠鳡鱧鳣鳥鳩雞鳶鳴鸤鷗鴉鸧鴇鴆鴣鶇鸕鴨鸮鴦鸰鴟鴝鴛鸴鴕鷥鷙鴯鴰鵂鸻鸼鴿鸞鴻鹀鵓鸝鵑鵠鵝鵒鷴鵜鵡鵲鶓鵪鹍鵯鵬鹐鶉鹒鹓鹔鶘鹖鶚鶻鶿鶥鶩鹝鷂鹟鹠鹡鹢鶼鶴鹥鸚鷓鷚鷯鷦鷲鷸鷺鹯鷹鸌鹲鸛鹴鹺麥麩黃黌黡黷黲黽黿鼌鼉鼗鼴齇齊齏齒齔龁龂齟齡齙齠齜齦齬齪齲齷龍龔龕龜誌制咨只裏系範松沒嘗嘗鬧面準鐘別閑乾盡臟拼"},ri=ie.S,ni=ie.T;function oi(t,e){var i,r,n,o,s="",a=e?(o=ri,ni):(o=ni,ri);if("string"!=typeof t)return t;for(i=0;ic(void 0,void 0,void 0,function*(){let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){let t=e.contentDocument;t&&(e=(e=Math.floor(i.clientWidth/12))%2==0?e:e-1,0{let o=document.getElementById("page-area");var s,a;o&&(!(s=o.getElementsByTagName("iframe")[0])||(a=s.contentDocument)&&Math.abs(t.scrollHeight-t.scrollTop-t.clientHeight)<10&&Math.abs(a.body.scrollWidth-a.body.scrollLeft-a.body.clientWidth)<10&&(di(t,e,i,r),n("rendered")))})(i,r,n,o,l),t.body.scrollBy({top:0,left:i.offsetWidth+e,behavior:a?"smooth":"auto"})))}}}),hi=(t,e,i,r)=>{let n=a.getKookitConfig("chapterTitle");var o=Qe.findIndex(e.map(t=>(t.label=t.label.trim(),t)),{label:n.trim()});0!==o&&-1!==o&&n&&(a.setKookitConfig("chapterTitle",e[o-1].label),a.setKookitConfig("text","prevChapter"),ci(e[o-1].label,i,t,r))},ci=(i="",r,n,o)=>{let t=document.getElementById("page-area");if(t){var s=t.getElementsByTagName("iframe")[0];if(s){let e=s.contentDocument;if(e){e.body.innerHTML="";let t=Qe.findIndex(r.map(t=>(t.title=t.title.trim(),t)),{title:i.trim()});t=-1===t?0:t,e.body.innerHTML=r[t].text,a.setKookitConfig("chapterTitle",r[t].title),a.setKookitConfig("percentage",t/r.length+""),Xe(n,o),((r,n)=>{let t=document.getElementById("page-area");if(t){var o=t.getElementsByTagName("iframe")[0];if(o){let i=o.contentDocument;if(i){var s,o=Math.floor(r.clientWidth/12),a=o%2==0?o:o-1;let t,e;for(s of i.getElementsByTagName("img")){var l=s.parentElement;t=0,e=0,s.width&&s.height?s.height/s.width>l.clientHeight/l.clientWidth?(t=l.clientHeight,e=t*s.width/s.height):(e=l.clientWidth,t=e*s.height/s.width):t=l&&l.clientWidth&&0{let s=t||a.getKookitConfig("text")||"",e=document.getElementById("page-area");if(e){t=e.getElementsByTagName("iframe")[0];if(t){let i=t.contentDocument;if(i){let e=Array.from(i.body.querySelectorAll("h1,h2,h3,h4,p,img"));if(s){let t=e.filter((t,e)=>(t.innerText&&(t.innerText===s||t.innerText===si.t2s(s)||t.innerText===si.s2t(s))||t.getAttribute("recindex")&&t.getAttribute("recindex")===s)&&Math.abs(e-parseInt(o||a.getKookitConfig("count")))<2)[0];"scroll"!==n?i.body.scrollTo(s&&t?t.getBoundingClientRect().left:"prevChapter"===s?i.body.scrollWidth:0,0):r.scrollTo(0,s&&t?t.getBoundingClientRect().top:0)}else("scroll"!==n?i.body:r).scrollTo(0,0)}}}},fi=(n,o)=>c(void 0,void 0,void 0,function*(){if(!ai){let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){let t=e.contentDocument;if(t){let e=Array.from(t.body.querySelectorAll("h1,h2,h3,h4,p,img"));let i=e.filter(t=>pi(n,t,o)&&(t.innerText.trim()||t.getAttribute("recindex")))[0],r=0;for(let t=0;t{ai=!1},100)}}}}}),di=(t,e,i,r)=>{let n=a.getKookitConfig("chapterTitle");var o=Qe.findIndex(e.map(t=>(t.label=t.label.trim(),t)),{label:n.trim()});o!==e.length-1&&-1!==o&&(a.setKookitConfig("chapterTitle",e[o+1].label),a.setKookitConfig("text",""),ci(e[o+1].label,i,t,r))},gi=(r,n)=>{let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){let i=e.contentDocument;if(i){let t=Array.from(i.body.querySelectorAll("h1,h2,h3,h4,p,img")),e=t.filter(t=>pi(r,t,n)&&(t.innerText.trim()||t.getAttribute("recindex")));return("scroll"!==n?e:t).map(t=>t.innerText).join(" ")}}}},mi=(r,n)=>{let o=[];for(let i=0;i{var r,n=!1,o=e.getBoundingClientRect();return"scroll"!==i&&e.innerText.trim()?n=-10<(r=o.left)&&r<=t.offsetWidth:e.innerText.trim()?n=(r=o.top)>=t.scrollTop&&r<=t.scrollTop+t.offsetHeight:"scroll"!==i&&(e.id||e.onerror)&&"IMG"===e.tagName?n=0<=(i=o.left)&&i<=t.offsetWidth:(e.id||e.onerror)&&"IMG"===e.tagName&&(n=(o=o.top)>=t.scrollTop-t.clientHeight/2&&o<=t.scrollTop+t.offsetHeight+t.clientHeight/2),n};class vi{constructor(t){this.bookStr=t,this.chapterList=[],this.chapterDocList=[]}getChapterDoc(){var e=-1")?this.bookStr.split("").filter(t=>""!==t.trim()):this.bookStr.split("
").filter(t=>""!==t.trim());let n=[],o=[],i="";for(let t=0;t{var e=0(!e&&(t.innerText.trim().startsWith("第")&&i(t.innerText.trim())||t.innerText.trim().startsWith("Chapter")||t.innerText.trim().startsWith("CHAPTER"))&&(e=!0),l(t.innerText.trim(),e))))}getChapterDoc(){if(0 ").filter(t=>""!==t.trim());for(let t=0;tthis.chapterList.length&&0===t&&(e=Math.floor(9e5*Math.random())+1e5,this.chapterList.unshift({label:"Forword"+t,id:"title"+e,href:"title"+e,subitems:[]})),this.chapterDocList.push({title:this.chapterList[t].label,text:i[t]});return this.chapterDocList}}class bi{constructor(){this.callbacks={},this.callbacks.base={}}on(t,e){const i=this;if(void 0===t||""===t)return console.warn("wrong names"),!1;if(void 0===e)return console.warn("wrong callback"),!1;const r=this.resolveNames(t);return r.forEach(function(t){t=i.resolveName(t);i.callbacks[t.namespace]instanceof Object||(i.callbacks[t.namespace]={}),i.callbacks[t.namespace][t.value]instanceof Array||(i.callbacks[t.namespace][t.value]=[]),i.callbacks[t.namespace][t.value].push(e)}),this}off(t){const r=this;if(void 0===t||""===t)return console.warn("wrong name"),!1;const e=this.resolveNames(t);return e.forEach(function(t){var e=r.resolveName(t);if("base"!==e.namespace&&""===e.value)delete r.callbacks[e.namespace];else if("base"===e.namespace)for(const i in r.callbacks)r.callbacks[i]instanceof Object&&r.callbacks[i][e.value]instanceof Array&&(delete r.callbacks[i][e.value],0===Object.keys(r.callbacks[i]).length&&delete r.callbacks[i]);else r.callbacks[e.namespace]instanceof Object&&r.callbacks[e.namespace][e.value]instanceof Array&&(delete r.callbacks[e.namespace][e.value],0===Object.keys(r.callbacks[e.namespace]).length&&delete r.callbacks[e.namespace])}),this}trigger(t,e=[]){if(void 0===t||""===t)return console.warn("wrong name"),!1;const i=this;const r=e instanceof Array?e:[];let n=this.resolveNames(t);n=this.resolveName(n[0]),setTimeout(()=>{if("base"===n.namespace)for(const t in i.callbacks){if(i.callbacks[t]instanceof Object&&i.callbacks[t][n.value]instanceof Array)i.callbacks[t][n.value].forEach(function(t){t.apply(i,r)});else if(this.callbacks[n.namespace]instanceof Object){if(""===n.value)return console.warn("wrong name"),this;i.callbacks[n.namespace][n.value].forEach(function(t){t.apply(i,r)})}return null}},100)}resolveNames(t){let e=t;return e=e.replace(/[^a-zA-Z0-9 ,/.]/g,""),e=e.replace(/[,/]+/g," "),e=e.split(" "),e}resolveName(t){const e={};var i=t.split(".");return e.original=t,e.value=i[0],e.namespace="base",1=this.capacity)&&(this.buffer[this.size]=t,this.size+=1,!0)}full(){return this.size===this.capacity}get(t){return this.buffer[t]}}class Ci{constructor(t){this.getAzw3Style=t=>{var e;let i="";return t.documentElement.lastChild&&null!==(e=t.documentElement.lastChild)&&void 0!==e&&e.lastChild&&!this.isElement(null===(e=t.documentElement.lastChild)||void 0===e?void 0:e.lastChild)&&(i=(null===(t=t.documentElement.lastChild)||void 0===t?void 0:t.lastChild.textContent)||""),i},this.render_image=(o,s)=>new Promise((i,e)=>{var r=o[s],t=r.getAttribute("recindex")?+r.getAttribute("recindex"):s+1;r.setAttribute("onerror","this.style.display='none'");var n=this.read_image(t-1),t=new FileReader;t.onload=t=>{var e;r.src=null===(e=t.target)||void 0===e?void 0:e.result,i(null===(t=t.target)||void 0===t?void 0:t.result)},t.onerror=function(t){e(t)},t.readAsDataURL(n)}),this.view=new DataView(t),this.buffer=this.view.buffer,this.offset=0,this.header=null}parse(){}getUint8(){var t=this.view.getUint8(this.offset);return this.offset+=1,t}getUint16(){var t=this.view.getUint16(this.offset);return this.offset+=2,t}getUint32(){var t=this.view.getUint32(this.offset);return this.offset+=4,t}getStr(t){var e=xi(this.buffer.slice(this.offset,this.offset+t));return this.offset+=t,e}skip(t){this.offset+=t}setoffset(t){this.offset=t}get_record_extrasize(t,e){for(var i,r,n,o=t.length-1,s=0,a=15;0>3&2047,l=3+(7&s),h=r.size();for(let t=0;tc(this,void 0,void 0,function*(){this.load();var t=this.read_text(),t=Li.parseFromString(t,"text/html").documentElement,e=t.getElementsByTagName("img");for(let t=0;tpagebreak").filter(t=>t.trim());for(let t=0;tthis.chapterList.length&&0===t&&(e=Math.floor(9e5*Math.random())+1e5,this.chapterList.unshift({label:"Forword#"+t,id:"title"+e,href:"title"+e,subitems:[]})),this.chapterDocList.push({title:this.chapterList[t].label,text:i[t]});return this.chapterDocList}}const Di={svg:"image/svg+xml",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",zip:"application/zip",rar:"application/x-rar-compressed","7z":"application/x-7z-compressed",tar:"application/x-tar",html:"text/html",htm:"text/html",xml:"text/xml",xhtml:"application/xhtml+xml"};class _i{constructor(t,e,i,r,n){this.fileNameList=t,this.zip=e,this.bookStr="",this.format=n,this.bookDoc=null,this.mode=i,this.chapterList=[],this.extension=this.fileNameList[0].split(".").reverse()[0],this.element=r,this.getBookStr()}getBookStr(){let i=document.createElement("div");var r="single"===this.mode?1:2,t=Math.floor(this.element.clientWidth/12),n=t%2==0?t:t-1;for(let e=0;ec(this,void 0,void 0,function*(){var t=new Image;t.onload=function(){i(t.height/t.width)};let e;e="cbr"===this.format?this.zip.decompress(this.fileNameList[0]):"cbt"===this.format?this.zip[Qe.findLastIndex(this.zip,{name:this.fileNameList[0]})].buffer:yield this.zip.file(this.fileNameList[0]).async("arraybuffer"),t.src="data:"+Di[this.extension.toLowerCase()]+";base64,"+this.base64ArrayBuffer(e)}))}renderComic(){let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){let t=e.contentDocument;t&&(t.body.innerHTML=this.bookDoc.outerHTML)}}}renderImage(n){return new Promise((r,t)=>c(this,void 0,void 0,function*(){this.extension=this.fileNameList[0].split(".").reverse()[0];let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let e=i.contentDocument;if(e)if(e.getElementById(n+"")&&!e.getElementById(n+"").src){let t;t="cbr"===this.format?this.zip.decompress(this.fileNameList[n]):"cbt"===this.format?this.zip[Qe.findLastIndex(this.zip,{name:this.fileNameList[n]})].buffer:yield this.zip.file(this.fileNameList[n]).async("arraybuffer"),e.getElementById(n+"")&&(e.getElementById(n+"").src="data:"+Di[this.extension.toLowerCase()]+";base64,"+this.base64ArrayBuffer(t)),r()}else r()}}}))}base64ArrayBuffer(t){for(var e,i="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=new Uint8Array(t),o=n.byteLength,t=o%3,s=o-t,a=0;a>18]+r[(258048&e)>>12]+r[(4032&e)>>6]+r[63&e];return 1==t?i+=r[(252&(e=n[s]))>>2]+r[(3&e)<<4]+"==":2==t&&(i+=r[(64512&(e=n[s]<<8|n[1+s]))>>10]+r[(1008&e)>>4]+r[(15&e)<<2]+"="),i}}const Si=(i,r,n)=>c(void 0,void 0,void 0,function*(){let t=document.getElementById("page-area");if(t){var e=t.getElementsByTagName("iframe")[0];if(e){let t=e.contentDocument;t&&(e=(e=Math.floor(i.clientWidth/12))%2==0?e:e-1,0{var n=t||parseInt(a.getKookitConfig("count"))||0;let e=document.getElementById("page-area");if(e){t=e.getElementsByTagName("iframe")[0];if(t){let e=t.contentDocument;if(e)if(n){let t=Array.from(e.body.querySelectorAll("img"))[n];"scroll"!==r?e.body.scrollTo(n&&t?t.getBoundingClientRect().left:0,0):i.scrollTo(0,n&&t?t.getBoundingClientRect().top:0)}else("scroll"!==r?e.body:i).scrollTo(0,0)}}};window.e=window.eval,window.a=window.atob,t.Azw3Render=class extends bi{constructor(t,e,i){super(),this.azw3Buffer=t,this.mode=e,this.isSliding=i||!1,this.chapterList=[],this.chapterDocList=[],this.bookStr="",this.element=""}renderTo(n){return c(this,void 0,void 0,function*(){return new Promise((r,t)=>c(this,void 0,void 0,function*(){if(yield g()){var e=yield new Ci(this.azw3Buffer).render(),i=e.outerHTML;this.bookStr=i,this.element=n;let t=new yi(this.bookStr);this.chapterList=t.getChapter(),this.chapterDocList=t.getChapterDoc();i=a.getKookitConfig("chapterTitle")||this.chapterDocList[0].title;ti(n,Ye(e)),ii(n,this.mode),ci(i,this.chapterDocList,this.element,this.mode),this.trigger("rendered"),r()}else r()}))})}getChapter(){return this.chapterList}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}goToChapter(t){ci(t,this.chapterDocList,this.element,this.mode),this.trigger("rendered")}goToPosition(t){var{text:e,chapterTitle:i,count:t}=JSON.parse(t);ci(i,this.chapterDocList,this.element,this.mode),ui(this.element,this.mode,e,t),this.record(),this.trigger("rendered")}prev(){return c(this,void 0,void 0,function*(){let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&("scroll"===this.mode||0===e.body.scrollLeft?(hi(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}removeContent(){this.element.innerHTML=""}next(){return c(this,void 0,void 0,function*(){let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&(Math.abs(e.body.scrollWidth-e.body.scrollLeft-e.body.clientWidth)<10||"scroll"===this.mode?(di(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,-1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}visibleText(){return gi(this.element,this.mode)}doSearch(t){return mi(t,this.chapterDocList)}flatChapter(t){return t}getProgress(){return ei()}record(){fi(this.element,this.mode)}getPosition(){return{text:a.getKookitConfig("text"),chapterTitle:a.getKookitConfig("chapterTitle"),count:a.getKookitConfig("count"),percentage:a.getKookitConfig("percentage")}}getMetadata(){return new Ci(this.azw3Buffer).getMetadata()}setStyle(e){let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;t&&t.body.setAttribute("style",e+t.body.getAttribute("style"))}}}},t.ComicRender=class extends bi{constructor(t,e,i,r,n){super(),this.isSliding=n||!1,this.mode=i,this.format=r,this.zip=e,this.dataSource=t,this.element="",this.parser="",this.chapterList=[],this.largestId=parseInt(a.getKookitConfig("count"))||0}renderTo(l,h=0){return new Promise((a,t)=>c(this,void 0,void 0,function*(){if(yield g()){this.element=l,ti(l),this.parser=new _i(this.dataSource,this.zip,this.mode,this.element,this.format),this.chapterList=this.parser.getChapter(),this.parser.renderComic(),yield this.renderImage(h);let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;if(t&&t.getElementById(h+"")){var r=yield this.parser.getImgRatio(),n=t.getElementById(h+"").clientWidth*r;let e=t.getElementsByTagName("img");var o,i=Math.floor(this.element.clientWidth/12),s=i%2==0?i:i-1;for(let t=0;tthis.element.clientHeight?(e[t].style.height=this.element.clientHeight+"px",e[t].style.width=this.element.clientHeight/r+"px",e[t].style.paddingLeft=(this.element.clientWidth-("single"===this.mode?0:s))/2/o-this.element.clientHeight/r/2+"px"):(e[t].style.height=n+"px",e[t].style.marginTop=this.element.clientHeight/2-n/2+"px"));ii(l,this.mode),Xe(l,this.mode),this.trigger("rendered"),a()}}}}else a()}))}flatChapter(t){return t}getProgress(){return{totalPage:this.chapterList.length,currentPage:parseInt(a.getKookitConfig("count"))||0}}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}renderImage(t){return c(this,void 0,void 0,function*(){yield this.parser.renderImage(t-3),yield this.parser.renderImage(t-2),yield this.parser.renderImage(t-1),yield this.parser.renderImage(t),yield this.parser.renderImage(t+1),yield this.parser.renderImage(t+2),yield this.parser.renderImage(t+3)})}getChapter(){return this.chapterList}goToPosition(t){var t=JSON.parse(t)["id"];Ei(this.element,this.mode,t),this.record()}goToChapter(t){return c(this,void 0,void 0,function*(){Ei(this.element,this.mode,this.dataSource.indexOf(t)+""),yield this.renderImage(this.dataSource.indexOf(t))})}record(){return c(this,void 0,void 0,function*(){fi(this.element,this.mode);var t=parseInt(a.getKookitConfig("count"))||0;yield this.parser.renderImage(t-3),yield this.parser.renderImage(t-2),yield this.parser.renderImage(t-1),yield this.parser.renderImage(t),yield this.parser.renderImage(t+1),yield this.parser.renderImage(t+2),yield this.parser.renderImage(t+3)})}removeContent(){this.element.innerHTML=""}prev(){return c(this,void 0,void 0,function*(){var t=parseInt(a.getKookitConfig("count"))||0;yield this.parser.renderImage(t),yield this.parser.renderImage(t-1),yield this.parser.renderImage(t-2),yield this.parser.renderImage(t-3),yield this.parser.renderImage(t-4),Si(this.element,1,this.isSliding),fi(this.element,this.mode)})}next(){return c(this,void 0,void 0,function*(){var t=parseInt(a.getKookitConfig("count"))||0;yield this.parser.renderImage(t),yield this.parser.renderImage(t+1),yield this.parser.renderImage(t+2),yield this.parser.renderImage(t+3),yield this.parser.renderImage(t+4),Si(this.element,-1,this.isSliding),fi(this.element,this.mode)})}getPosition(){return{text:a.getKookitConfig("text"),chapterTitle:a.getKookitConfig("chapterTitle"),count:a.getKookitConfig("count"),percentage:a.getKookitConfig("percentage")}}setStyle(e){let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;t&&t.body.setAttribute("style",e+t.body.getAttribute("style"))}}}},t.EpubRender=class extends bi{constructor(t,e,i){super(),this.epubBuffer=t,this.mode=e,this.isSliding=i||!1,this.chapterList=[],this.chapterDocList=[],this.bookStr="",this.element=""}renderTo(i,r){return c(this,void 0,void 0,function*(){return new Promise((t,e)=>c(this,void 0,void 0,function*(){(yield g())?(this.epub=window.ePub(this.epubBuffer,{}),this.element=i,this.rendition=this.epub.renderTo(this.element,{manager:"default",flow:"scroll"===this.mode?"scrolled":"auto",width:"100%",height:"100%",snap:!0,spread:"single"===this.mode?"none":""}),this.rendition.display(r).then(()=>{this.trigger("rendered"),t()}),this.rendition.on("rendered",()=>{this.trigger("rendered")})):t()}))})}getChapter(){return c(this,void 0,void 0,function*(){var t=yield this.epub.loaded.navigation;return t?(this.chapterList=t.toc,this.chapterList):[]})}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}flatChapter(e){let i=[];for(let t=0;t(t.label=t.label.trim(),t)),{label:t.trim()})])||void 0===t?void 0:t.href;this.rendition.display(t),this.trigger("rendered")}goToPosition(e){return c(this,void 0,void 0,function*(){console.log(e,"cfi");var t=JSON.parse(e)||{};this.epub.rendition.display(t.cfi),t.isFirst?setTimeout(()=>c(this,void 0,void 0,function*(){yield this.record()}),0):yield this.record(),this.trigger("rendered")})}removeContent(){this.element.innerHTML=""}prev(){return c(this,void 0,void 0,function*(){this.rendition.prev(),yield this.record(),console.log("prev"),this.trigger("page-changed")})}next(){return c(this,void 0,void 0,function*(){this.rendition.next(),yield this.record(),console.log("next"),this.trigger("page-changed")})}visibleText(){return c(this,void 0,void 0,function*(){const t=this.rendition.currentLocation();var e=t.start.cfi.replace(/!.*/,"").replace("epubcfi(",""),i=t.start.cfi.replace(/.*!/,"").replace(/\)/,""),r=t.end.cfi.replace(/.*!/,"").replace(/\)/,"");let n=yield this.epub.getRange(`epubcfi(${e}!,${i},${r})`);return n.toString()})}doSearch(e){return Promise.all(this.epub.spine.spineItems.map(t=>t.load(this.epub.load.bind(this.epub)).then(t.find.bind(t,e)).finally(t.unload.bind(t)))).then(t=>Promise.resolve([].concat.apply([],t).map(t=>(t.cfi=JSON.stringify({cfi:t.cfi}),t))))}getProgress(){return c(this,void 0,void 0,function*(){let t=this.rendition.currentLocation();return t.start||(yield this.epub.locations.generate(),t=this.rendition.currentLocation()),{currentPage:"double"===this.mode?parseInt(t.start.displayed.page/2+"")+1:t.start.displayed.page,totalPage:t.start.displayed.total}})}record(){return c(this,void 0,void 0,function*(){let t=this.rendition.currentLocation(),e=this.epub.locations._locations;t.start&&0!==e.length||(e=yield this.epub.locations.generate(),t=this.rendition.currentLocation());var i=t.start.cfi,r=t.start.percentage;let n=t.start.href;this.flattenChapters||(this.flattenChapters=this.flatChapter(this.chapterList));let o="Unknown Chapter",s=this.flattenChapters.filter(t=>-1c(this,void 0,void 0,function*(){this.epub=window.ePub(this.epubBuffer,{});let t=yield this.epub.loaded.metadata;var e=yield this.epub.coverUrl(),e=yield fetch(e).then(t=>t.blob()),i=new FileReader;i.readAsDataURL(e),i.onloadend=()=>{t.cover=i.result,r(t)}}))}setStyle(t){this.rendition.themes.default(t)}},t.MobiRender=class extends bi{constructor(t,e,i){super(),this.mobiBuffer=t,this.mode=e,this.chapterList=[],this.chapterDocList=[],this.bookStr="",this.element="",this.isSliding=i||!1}renderTo(r){return new Promise((i,t)=>c(this,void 0,void 0,function*(){if(yield g()){var e=(yield new Ci(this.mobiBuffer).render()).outerHTML;this.bookStr=e,this.element=r;let t=new vi(this.bookStr);this.chapterDocList=t.getChapterDoc(),this.chapterList=t.getChapter();e=a.getKookitConfig("chapterTitle")||this.chapterDocList[0].title;ti(r),ii(r,this.mode),ci(e,this.chapterDocList,this.element,this.mode),this.trigger("rendered"),i()}else i()}))}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}flatChapter(t){return t}getChapter(){return this.chapterList}goToChapter(t){ci(t,this.chapterDocList,this.element,this.mode),this.trigger("rendered")}goToPosition(t){var{text:e,chapterTitle:i,count:t}=JSON.parse(t);ci(i,this.chapterDocList,this.element,this.mode),ui(this.element,this.mode,e,t),this.record(),this.trigger("rendered")}removeContent(){this.element.innerHTML=""}prev(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&("scroll"===this.mode||0===e.body.scrollLeft?(hi(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}next(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&(Math.abs(e.body.scrollWidth-e.body.scrollLeft-e.body.clientWidth)<10||"scroll"===this.mode?(di(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,-1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}visibleText(){return gi(this.element,this.mode)}doSearch(t){return mi(t,this.chapterDocList)}getProgress(){return ei()}record(){fi(this.element,this.mode)}getPosition(){return{text:a.getKookitConfig("text"),chapterTitle:a.getKookitConfig("chapterTitle"),count:a.getKookitConfig("count"),percentage:a.getKookitConfig("percentage")}}getMetadata(){return new Ci(this.mobiBuffer).getMetadata()}setStyle(e){let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;t&&t.body.setAttribute("style",e+t.body.getAttribute("style"))}}}},t.StrRender=class extends bi{constructor(t,e,i){super(),this.bookStr=t,this.mode=e,this.chapterList=[],this.chapterDocList=[],this.element="",this.isSliding=i||!1}renderTo(r){return new Promise((i,t)=>c(this,void 0,void 0,function*(){if(yield g()){this.element=r;let t=new yi(this.bookStr);this.chapterList=t.getChapter(),this.chapterDocList=t.getChapterDoc();var e=a.getKookitConfig("chapterTitle")||this.chapterDocList[0].title;ti(r),ci(e,this.chapterDocList,this.element,this.mode),ii(r,this.mode),this.trigger("rendered"),i()}else i()}))}getChapter(){return this.chapterList}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}goToChapter(t){ci(t,this.chapterDocList,this.element,this.mode),this.trigger("rendered")}goToPosition(t){var{text:e,chapterTitle:i,count:t}=JSON.parse(t);ci(i,this.chapterDocList,this.element,this.mode),ui(this.element,this.mode,e,t),this.record(),this.trigger("rendered")}record(){fi(this.element,this.mode)}removeContent(){this.element.innerHTML=""}flatChapter(t){return t}prev(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&("scroll"===this.mode||0===e.body.scrollLeft?(hi(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}next(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&(Math.abs(e.body.scrollWidth-e.body.scrollLeft-e.body.clientWidth)<10||"scroll"===this.mode?(di(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,-1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}visibleText(){return gi(this.element,this.mode)}doSearch(t){return mi(t,this.chapterDocList)}getProgress(){return ei()}getPosition(){return{text:a.getKookitConfig("text"),chapterTitle:a.getKookitConfig("chapterTitle"),count:a.getKookitConfig("count"),percentage:a.getKookitConfig("percentage")}}setStyle(e){let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;t&&t.body.setAttribute("style",e+t.body.getAttribute("style"))}}}},t.TxtRender=class extends bi{constructor(t,e,i="utf-8",r){super(),this.txtBuffer=t,this.encoding=i,this.mode=e,this.chapterList=[],this.chapterDocList=[],this.bookStr="",this.element="",this.isSliding=r||!1}renderTo(r){return new Promise((i,t)=>c(this,void 0,void 0,function*(){if(yield g()){var e=(t=>{let e="",i=!1;var r;for(r of t.split("\n"))r.trim()&&(l(r.trim(),i)?((r.trim().startsWith("第")||r.trim().startsWith("Chapter")||r.trim().startsWith("CHAPTER"))&&(i=!0),e+=`

${r}

`):e+=`

${r}

`);return e})(new TextDecoder(this.encoding).decode(this.txtBuffer));this.bookStr=e,this.element=r;let t=new ki(this.bookStr);this.chapterList=t.getChapter(),this.chapterDocList=t.getChapterDoc();e=a.getKookitConfig("chapterTitle")||this.chapterDocList[0].title;ti(r),ii(r,this.mode),ci(e,this.chapterDocList,this.element,this.mode),this.trigger("rendered"),i()}else i()}))}getChapter(){return this.chapterList}goToChapter(t){ci(t,this.chapterDocList,this.element,this.mode),this.trigger("rendered")}getPageSize(){return{width:this.element.clientWidth,height:this.element.clientHeight}}goToPosition(t){var{text:e,chapterTitle:i,count:t}=JSON.parse(t);ci(i,this.chapterDocList,this.element,this.mode),ui(this.element,this.mode,e,t),this.record(),this.trigger("rendered")}record(){fi(this.element,this.mode)}removeContent(){this.element.innerHTML=""}flatChapter(t){return t}prev(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&("scroll"===this.mode||0===e.body.scrollLeft?(hi(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}next(){return c(this,void 0,void 0,function*(){this.trigger("page-changed");let t=document.getElementById("page-area");var e;t&&(!(e=t.getElementsByTagName("iframe")[0])||(e=e.contentDocument)&&(Math.abs(e.body.scrollWidth-e.body.scrollLeft-e.body.clientWidth)<10||"scroll"===this.mode?(di(this.element,this.chapterList,this.chapterDocList,this.mode),this.trigger("rendered")):li(this.element,this.chapterList,this.chapterDocList,this.mode,-1,this.isSliding,this.trigger),fi(this.element,this.mode)))})}visibleText(){return gi(this.element,this.mode)}doSearch(t){return mi(t,this.chapterDocList)}getProgress(){return ei()}getPosition(){return{text:a.getKookitConfig("text"),chapterTitle:a.getKookitConfig("chapterTitle"),count:a.getKookitConfig("count"),percentage:a.getKookitConfig("percentage")}}setStyle(e){let t=document.getElementById("page-area");if(t){var i=t.getElementsByTagName("iframe")[0];if(i){let t=i.contentDocument;t&&t.body.setAttribute("style",e+t.body.getAttribute("style"))}}}},Object.defineProperty(t,"__esModule",{value:!0})}); diff --git a/src/assets/locales/cn/translation.json b/src/assets/locales/cn/translation.json index 1d163810..94766ba4 100644 --- a/src/assets/locales/cn/translation.json +++ b/src/assets/locales/cn/translation.json @@ -238,7 +238,7 @@ "Tips": "提示", "Brightness": "屏幕亮度", "How sync works": "同步是如何实现的?", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "同步功能需要配合第三方同步盘实现,在不同电脑上把数据存储位置修改为同一个网盘文件夹。当在其中一台电脑上点击同步后,Koodo中的数据就会更新到这个文件夹中。经过网盘同步后,在另一台电脑上打开Koodo,点击同步按钮,数据就会同步到Koodo中。具体操作方法请查看帮助文档。", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "同步功能需要配合第三方同步盘实现,在不同电脑上把数据存储位置修改为同一个网盘文件夹。当在其中一台电脑上点击同步后,Koodo中的数据就会更新到这个文件夹中。经过网盘同步后,在另一台电脑上打开Koodo,点击同步按钮,数据就会同步到Koodo中。具体操作方法请查看帮助文档。", "Line Height": "行间距", "Please turn off open books in the main window first": "请关闭直接在主窗口打开图书", "Please turn off merge with word first": "请关闭摸鱼模式", diff --git a/src/assets/locales/cs/translation.json b/src/assets/locales/cs/translation.json index 357a70c7..96242a04 100644 --- a/src/assets/locales/cs/translation.json +++ b/src/assets/locales/cs/translation.json @@ -1,342 +1,342 @@ { - "Books": "Všechny knihy", - "Recent": "Nedávné", - "Bookmarks": "Záložky", - "Favorites": "Oblíbené", - "Notes": "Poznámky", - "Highlights": "Zvýrazněné", - "Shelf": "Polička", - "Left": "Vlevo", - "Justify": "Zarovnat", - "Right": "Vpravo", - "Text Align": "Zarovnat text", - "Sync Successfully": "Synchronizace úspěšná", - "Permanently Delete": "Trvale odstranit", - "Default search engine": "Výchozí vyhledávač", - "Built-in font": "Vestavěné písmo", - "Cover": "Titul", - "Bold": "Tučné", - "Sort by": "Seřadit podle", - "Italic": "Kurziva", - "Text underline": "Podtržení", - "Text shadow": "Stín textu", - "Import Failed": "Import se nezdařil", - "New Version Available": "K dispozici nová verze", - "New Version": "Nová verze", - "Customize": "Přizpůsobit", - "Auto open book in fullscreen": "Automaticky otevřít knihu na celou obrazovku", - "System Font": "Systémové písmo", - "Access token expired, refetching token": "Platnost přístupového tokenu vypršela, token se znovu načítá", - "Access token received, please continue": "Přístupový token byl přijat, pokračujte prosím", - "Changelog": "Seznam změn", - "Update Complete": "Aktualizace dokončena", - "Fetching acess token failed": "Načítání přístupového tokenu se nezdařilo", - "Authorizing, please wait": "Autorizace, čekejte prosím", - "Downloading, please wait": "Stahování, čekejte prosím", - "Uploading, please wait": "Nahrávání, čekejte prosím", - "Import": "Import", - "Backup": "Záloha", - "Search my library": "Prohledat mou knihovnu", - "Search my notes": "Prohledat mé poznámky", - "Search my highlights": "Prohledat můj výběr", - "Card": "Mřížka", - "List": "Seznam", - "Work": "Práce", - "Entertainment": "Volný čas", - "Study": "Studium", - "Author": "Autor", - "Duplicate Shelf": "Duplikovat poličku", - "Reading Time": "Čas čtení", - "Content": "Obsah", - "Voice": "Hlas", - "Speed": "Rychlost", - "Bookmark": "Záložka", - "Single-Page Mode": "Jedna stránka", - "Double-Page Mode": "Dvě stránky", - "Background Color": "Barva pozadí", - "Font Size": "Velikost písma", - "Font Family": "Typ písma", - "Default": "Výchozí", - "Small": "Malé", - "Medium": "Normální", - "Large": "Velké", - "Cancel Successfully": "Úspěšně přerušeno", - "Only supported by desktop version": "Podporováno pouze ve verzi pro stolní počítače", - "Hide mimical background": "Skrytí imitace pozadí", - "Auto hide cursor when reading": "Automatické skrytí ukazatele při čtení", - "Disable update notification": "Vypnout upozornění na aktualizace", - "Roadmap": "Plánovaná vylepšení", - "Paragraph Spacing": "Mezery mezi odstavci", - "Unlock": "Odemknout", - "Lock": "Uzamknout", - "Reading Option": "Možnost čtení", - "Progress": "Postup", - "Exit": "Zavřít", - "Language": "Jazyk", - "Enter Fullscreen": "Na celou obrazovku", - "Exit Fullscreen": "Ukončit režim celé obrazovky", - "Add Bookmark": "Přidat záložku", - "Add to Shelf": "Přidat na poličku", - "New Shelf": "Nová polička", - "New": "Nový", - "Cancel": "Zrušit", - "Confirm": "Potvrdit", - "Delete": "Smazat", - "Delete This Book": "Smazat knihu", - "Edit Book": "Upravit knihu", - "Edit Successfully": "Úprava byla úspěšná", - "Book Name": "Jméno knihy", - "Sort by Date": "Seřadit podle data", - "Descend": "Sestupně", - "Ascend": "Vzestupně", - "Sort by Name": "Jméno knihy", - "Token": "Token", - "Book not exist": "Kniha neexistuje", - "Please authorize your account, and fill the following box with the token": "Prosím autorizujte svůj účet a vyplňte následující pole tokenem", - "Copy Link": "Kopírovat odkaz", - "Copy Token": "Kopírovat token", - "Copied": "Zkopírováno", - "Chinese Coversion": "Konverze do čínštiny", - "Simplified To Traditional": "Ze zjednodušené do tradiční", - "Traditional To Simplified": "Z tradiční do zjednodušené", - "Shelf Title is Empty": "Název poličky je prázdný", - "Copy Link Successfully": "Odkaz úspěšně zkopírován", - "Add Successfully": "Úspěšně přidáno", - "Select": "Vybrat", - "Coming Soon": "Již brzy", - "Understand": "Rozumím", - "Authorize Successfully": "Autorizace úspěšná", - "Authorize Failed": "Autorizace neúspěšná", - "Choose your operation": "Vybrat činnost", - "Where is your data?": "Kde jsou uložena Vaše data?", - "Where to keep your data?": "Kde uchovávat Vaše data?", - "I want to backup": "Chci zálohovat", - "I want to restore": "Chci obnovit", - "Delete this shelf": "Smazat poličku", - "This action will clear and remove this shelf": "Tato akce tuto poličku odstraní", - "Delete this tag": "Odstranit tento štítek", - "This action will clear and remove this tag": "Tato akce tento štítek odstraní", - "Backup Successfully": "Zálohování úspěšné", - "Restore Successfully": "Obnovení úspěšné", - "Try refresh or restart": "Zkuste obnovit nebo restartovat", - "Search the book": "Prohledat knihu", - "Theme Color": "Barevné téma", - "Turn on text-to-speech": "Zapnout převod textu na řeč", - "Scroll Mode": "Režim posouvání", - "Loading": "Načítání", - "Note": "Poznámka", - "Page Width": "Šířka stránky", - "Digest": "Přehled", - "Auto expand content": "Automaticky rozbalit obsah", - "Hide footer": "Skrýt zápatí", - "Hide header": "Skrýt záhlaví", - "Book size is over 20M": "Velikost knihy je přes 20M", - "Current Font Size": "Aktuální velikost písma", - "Current Chapter": "Aktuální kapitola", - "Turn off text-to-speech": "Vypnout převod textu na řeč", - "Warning": "Varování", - "All Tags": "Všechny štítky", - "Turn On Successfully": "Úspěšně zapnuto", - "Turn Off Successfully": "Úspěšně vypnuto", - "Turn off touch screen mode": "Vypnout režim dotykové obrazovky", - "Use built-in font": "Použít vestavěné písmo", - "Setting": "Nastavení", - "Turn on touch screen mode": "Zapnout režim dotykové obrazovky", - "Auto open last-read book": "Automaticky otevřít naposledy čtenou knihu", - "About Project": "O projektu", - "Developer": "Vývojář", - "Please import less than 10 books": "Importujte prosím méně než 10 knih", - "Please delete some books before import": "Před importem smažte některé knihy", - "For better user experince, please visit this site on a computer": "Pro lepší uživatelský zážitek navštivte tyto stránky na počítači", - "Wrong bookmark": "Špatná záložka", - "Last Step": "Předchozí krok", - "Next Step": "Další krok", - "Go To": "Jít na", - "It seems like you're lost": "Vypadá to, že jste se ztratili", - "Return to home": "Zpět na domovskou stránku", - "Only desktop support this format": "Tento formát je podporován pouze desktopovou verzí", - "Only desktop support this service": "Tato služba je podporována pouze desktopovou verzí", - "Delete from Shelf": "Odstranit z poličky", - "Delete Successfully": "Úspěšně odstraněno", - "This action will move this book and its the notes, bookmarks and highlights of this book to the recycle bin": "Tato akce přesune knihu včetně všech poznámek, záložek a zvýraznění do koše", - "This action won't delete the original book": "Tato akce neodstraní původní knihu", - "From": "Z", - "Duplicate Book": "Duplikovat knihu", - "Unknown Chapter": "Neznámá kapitola", - "Unknown Authur": "Neznámý autor", - "Minute": "Minuta", - "Empty": "Prázdné", - "Next Chapter": "Další kapitola", - "Prev Chapter": "Předchozí kapitola", - "Less": "Méně", - "Current Reading Time": "Uplynulý čas: {{count}} minut", - "Finish Reading Time": "Zbývající čas: {{count}} minut", - "Book Page": "Strana {{count}}", - "Total books": "Celkem {{count}} knih", - "Pages": "Stránky", - "Chapters": "Kapitoly", - "Translate": "Přeložit", - "Continuous": "Plynulý", - "Scroll": "Rolovat", - "Show in the book": "Ukázat v knize", - "More Notes": "Více poznámek", - "Pick Color": "Vybrat barvu", - "Highlight Successfully": "Zvýraznění úspěšné", - "Take Note": "Vytvořit poznámku", - "Highlight": "Zvýraznit", - "Copy Successfully": "Úspěšně zkopírováno", - "Copy ": "Kopírovat", - "Text Color": "Barva textu", - "Export": "Export", - "Restore": "Obnovit", - "Publisher": "Vydavatel", - "Added at": "Přidáno", - "Margin": "Okraj", - "Do you want to open this link in browser": "Chcete tento odkaz otevřít v prohlížeči?", - "Webdav Info": "Webdav je snadno použitelné a efektivní řešení zálohy. Doporučujeme používat službu Webdav od společnosti NextCloud.", - "Please Wait a moment": "Prosím, počkejte chvíli", - "Server Address": "Adresa serveru", - "Username": "Uživatelské jméno", - "Password": "Heslo", - "Description": "Popis", - "Sort by Recent": "Nedávno přečtené", - "Collapse sidebar": "Sbalit postranní panel", - "Show sidebar": "Rozbalit postranní panel", - "Sync": "Synchronizace", - "Help": "Pomoc", - "Feedback": "Zpětná vazba", - "Github Repo": "Github Repo", - "Speak the text": "Předčítat text", - "Search on the internet": "Najít na internetu", - "Search in the book": "Najít v knize", - "Change storage location": "Změnit umístění úložiště", - "Change location": "Změnit umístění", - "Change Successfully": "Změna úspěšná", - "Too many images": "Kniha obsahuje příliš mnoho obrázků", - "Export Successfully": "Export úspěšný", - "Change Failed": "Změna se nezdařila", - "You successfully update to": "Úspěšně jste aktualizovali na", - "Deleted Books": "Koš", - "Delete All Books": "Odstranit všechny knihy", - "Sort by Duration": "Doba četby", - "Sort by Author": "Jméno autora", - "Audio is not ready yet": "Převod textu na řeč ještě není připraven", - "Drop your books here": "Sem přetáhněte své knihy", - "Sort by Percentage": "Postup v knize", - "This action will remove all the books in recycle bin,together with their notes, bookmarks and digests": "Tato akce odstraní všechny knihy z koše i s jejich poznámkami, záložkami a přehledy.", - "Batch import only support epub or pdf files": "Dávkový import podporuje pouze soubory epub nebo pdf", - "The deleted books will show up here": "Zde se zobrazí odebrané knihy", - "Empty Recycle Bin": "Prázdný koš", - "Skip": "Přeskočit", - "Local": "Lokální", - "Tips": "Tipy", - "Brightness": "Jas", - "How sync works": "Jak funguje synchronizace", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Na různých počítačích je nutné ručně změnit umístění úložiště na stejnou synchronizační složku. Po kliknutí na tlačítko synchronizace Koodo Reader automaticky nahraje nebo stáhne data z této složky dle časového razítka.", - "Line Height": "Výška řádku", - "Please turn off open books in the main window first": "Nejprve prosím zavřete otevřené knihy v hlavním okně", - "Please turn off merge with word first": "Nejprve prosím vypněte sloučení s Wordem", - "Please choose an empty folder": "Vyberte prosím prázdnou složku", - "Data change detected, whether to update?": "Zjištěna změna dat, aktualizovat?", - "Empty Library": "Prázdná knihovna", - "Download": "Stáhnout", - "Use the fonts from your local computer": "Použít písma z místního počítače", - "Backup your data with Webdav": "Zálohujte svá data pomocí Webdav", - "Click the import button to add books": "Kliknutím na tlačítko importovat přidáte knihy", - "Turn on night mode": "Zapnout noční režim", - "Turn on auto update": "Zapnout automatickou aktualizaci", - "Auto Update relys on Github Release for package hosting, if your internet doesn't have stable connection to Github, we highly recommand you to turn off this option": "Služba automatické aktualizace se při hostování balíčků spoléhá na službu Github Release, pokud váš internet nemá stabilní připojení ke Githubu, důrazně vám doporučujeme tuto možnost vypnout.", - "File size": "Velikost souboru", - "Take effect at next startup": "Změny se projeví po příštím spuštění", - "View Mode": "Režim zobrazení", - "Download Desktop Version": "Stáhnout verzi pro stolní počítače", - "No Favorite Books": "Žádné oblíbené knihy", - "Move your mouse on the top of any book, click the heart icon to add it to your favorite books": "Najeďte myší na horní část jakékoli knihy, klikněte na ikonu srdce a přidejte ji do oblíbených knih", - "Empty Reading Records": "Prázdné záznamy o čtení", - "Empty Bookmark": "Žádné záložky", - "Empty Note": "Žádné poznámky", - "Select any text and click the Note button on the popup menu": "Vyberte libovolný text a v rozbalovací nabídce klikněte na tlačítko Poznámka", - "Empty Highlight": "Žádné zvýraznění", - "Select any text and click the Highlight button on the popup menu": "Vyberte libovolný text a v rozbalovací nabídce klikněte na tlačítko Zvýraznit", - "Invert color": "Invertovat barvy", - "Empty Shelf": "Prázdná polička", - "Move your mouse on top of any book, then click the more icon to add the book to the shelf": "Najeďte myší na libovolnou knihu, a poté kliknutím na ikonu Více přidejte knihu na poličku", - "Download failed, network problem or no backup": "Stahování se nezdařilo, problém se sítí nebo žádná záloha", - "Upload failed, check your connection": "Nahrávání se nezdařilo, zkontrolujte připojení", - "Version": "Verze: ", - "Not supported yet": "Zatím není podporováno", - "Update to": "Aktualizovat na", - "Date": "Datum: ", - "Blue": "Modrá", - "Red": "Červená", - "Green": "Zelená", - "Purple": "Fialová", - "Unauthorize": "Neautorizováno", - "Remember window's size": "Zapamatovat si velikost okna", - "Letter Spacing": "Mezery mezi písmeny", - "Unauthorize Successfully": "Zrušení autorizace úspěšné", - "Download Demo Book": "Stáhnout ukázkovou knihu", - "Extra Large": "Extra velké", - "Ultra Large": "Ultra velké", - "Disable analytics service": "Zakázat službu analýzy", - "Hide navigation button": "Skrýt navigační tlačítko", - "More": "Více", - "Collect": "Sbírat", - "Copy": "Kopírovat", - "Hi! Stranger": "Ahoj cizinče!", - "Sync data from storage": "Synchronizovat data z úložiště", - "Click on any book to read": "Kliknutím na libovolnou knihu si ji můžete přečíst", - "Move your mouse on the top edge of the reader": "Přesuňte myš na horní okraj čtečky", - "Download failed,network problem or no backup": "Stahování se nezdařilo, problém se sítí nebo žádná záloha", - "Choose your action to this book": "Vyberte akci pro tuto knihu", - "Edit": "Upravit", - "Add": "Přidat", - "Survey": "Průzkum", - "What's new about this version": "Co je nového v této verzi", - "Our Website": "Naše webové stránky", - "What's New": "Co je nového", - "What's been fixed": "Co bylo opraveno", - "Target": "Cíl", - "Select All": "Vybrat vše", - "Excute Successfully": "Provedení úspěšné", - "Disable screen blanking": "Zakázat potemnění obrazovky", - "When Koodo is running, your computer won't enter sleep mode": "Když je Koodo spuštěn, počítač nepřejde do režimu spánku", - "Prevent accidental trigger": "Zabránit náhodnému spuštění", - "Import books as link": "Importovat knihy jako odkaz", - "Close main window while reading": "Při čtení zavřít hlavní okno", - "Merge reader into Word": "Sloučit čtečku s Wordem", - "Get rid of window frame, make reader hide into Word or any text editor, and can't be detected. You need to set up the reader's position, size and style first.": "Zbaví čtečku zarámování okna a skryje ji do Wordu nebo do jiného textového editoru, takže nebude rozpoznatelná. Nejprve je třeba nastavit pozici, velikost a styl čtečky.", - "The imported books will not be copied to library, only linked to the original book path": "Importované knihy se nezkopírují do knihovny, pouze se propojí s původní cestou ke knize.", - "Reader menu will not be triggered by hovering but clicking on the area": "Nabídka čtečky se nespustí najetím, ale kliknutím na oblast", - "Gesture and UI optimization for touch screen": "Optimalizace gest a uživatelského rozhraní pro dotykovou obrazovku", - "The book that you read from last time will be open automatically when launching": "Kniha, kterou jste četli naposledy, se při spuštění automaticky otevře", - "All the folded content will be expanded in the navigation panel": "Veškerý sbalený obsah se rozbalí v navigačním panelu", - "Reader window will be maximized to fit the screen when opening a book": "Okno čtečky se při otevření knihy přizpůsobí velikosti obrazovky", - "Open books in the main window": "Otevřít knihy v hlavním okně", - "Book won't be opened in a seperate window but directly opened in the main window": "Kniha se neotevře v samostatném okně, ale přímo v hlavním okně", - "Book not exsits": "Kniha neexistuje", - "Reach frequency limit": "Dosažení limitu frekvence", - "Error happens": "Chyby se stávají", - "Text Indent": "Odsazení textu", - "Deselect All": "Odznačit vše", - "Authorize": "Autorizovat", - "Open book without adding it to library": "Otevřít knihu bez přidání do knihovny", - "When opening books in the file manager with Koodo, the opened books won't be added to the library": "Při otevření knih ve správci souborů pomocí aplikace Koodo se otevřené knihy nepřidají do knihovny", - "Hide menu button": "Skrýt tlačítko nabídky", - "Manage": "Spravovat", - "Sliding Animation": "Posuvná animace", - "Please turn off open books in the main window": "Vypněte prosím otevřené knihy v hlavním okně", - "This action will delete all the notes, bookmarks and digests of this book": "Tato akce smaže všechny poznámky, záložky a výtahy této knihy.", - "More formats supported": "Více podporovaných formátů", - "Koodo Reader's web version are limited by the browser, for more powerful features, please download the desktop version.": "Webová verze aplikace Koodo Reader je omezena prohlížečem. Pro výkonnější funkce si stáhněte verzi pro stolní počítače.", - "Chinese Conversion": "Konverze čínštiny", - "Use first page as PDF cover": "Použít první stránku jako obálku PDF", - "You may see this error when the book you're importing is not supported by Koodo Reader, try converting it with Calibre": "Tato chyba se může zobrazit, pokud importovaná kniha není podporována programem Koodo Reader, zkuste ji převést pomocí Calibre", - "Shelf title can't be pure number": "Název police nemůže být čistě číselný", - "Open Console": "Otevřít konzolu", - "Appearance": "Vzhled", - "Light Mode": "Světlý režim", - "Night Mode": "Tmavý režim", - "Follow OS": "Přizpůsobit systému", - "Open url with built-in browser": "Otevřít adresu URL pomocí vestavěného prohlížeče" -} \ No newline at end of file + "Books": "Všechny knihy", + "Recent": "Nedávné", + "Bookmarks": "Záložky", + "Favorites": "Oblíbené", + "Notes": "Poznámky", + "Highlights": "Zvýrazněné", + "Shelf": "Polička", + "Left": "Vlevo", + "Justify": "Zarovnat", + "Right": "Vpravo", + "Text Align": "Zarovnat text", + "Sync Successfully": "Synchronizace úspěšná", + "Permanently Delete": "Trvale odstranit", + "Default search engine": "Výchozí vyhledávač", + "Built-in font": "Vestavěné písmo", + "Cover": "Titul", + "Bold": "Tučné", + "Sort by": "Seřadit podle", + "Italic": "Kurziva", + "Text underline": "Podtržení", + "Text shadow": "Stín textu", + "Import Failed": "Import se nezdařil", + "New Version Available": "K dispozici nová verze", + "New Version": "Nová verze", + "Customize": "Přizpůsobit", + "Auto open book in fullscreen": "Automaticky otevřít knihu na celou obrazovku", + "System Font": "Systémové písmo", + "Access token expired, refetching token": "Platnost přístupového tokenu vypršela, token se znovu načítá", + "Access token received, please continue": "Přístupový token byl přijat, pokračujte prosím", + "Changelog": "Seznam změn", + "Update Complete": "Aktualizace dokončena", + "Fetching acess token failed": "Načítání přístupového tokenu se nezdařilo", + "Authorizing, please wait": "Autorizace, čekejte prosím", + "Downloading, please wait": "Stahování, čekejte prosím", + "Uploading, please wait": "Nahrávání, čekejte prosím", + "Import": "Import", + "Backup": "Záloha", + "Search my library": "Prohledat mou knihovnu", + "Search my notes": "Prohledat mé poznámky", + "Search my highlights": "Prohledat můj výběr", + "Card": "Mřížka", + "List": "Seznam", + "Work": "Práce", + "Entertainment": "Volný čas", + "Study": "Studium", + "Author": "Autor", + "Duplicate Shelf": "Duplikovat poličku", + "Reading Time": "Čas čtení", + "Content": "Obsah", + "Voice": "Hlas", + "Speed": "Rychlost", + "Bookmark": "Záložka", + "Single-Page Mode": "Jedna stránka", + "Double-Page Mode": "Dvě stránky", + "Background Color": "Barva pozadí", + "Font Size": "Velikost písma", + "Font Family": "Typ písma", + "Default": "Výchozí", + "Small": "Malé", + "Medium": "Normální", + "Large": "Velké", + "Cancel Successfully": "Úspěšně přerušeno", + "Only supported by desktop version": "Podporováno pouze ve verzi pro stolní počítače", + "Hide mimical background": "Skrytí imitace pozadí", + "Auto hide cursor when reading": "Automatické skrytí ukazatele při čtení", + "Disable update notification": "Vypnout upozornění na aktualizace", + "Roadmap": "Plánovaná vylepšení", + "Paragraph Spacing": "Mezery mezi odstavci", + "Unlock": "Odemknout", + "Lock": "Uzamknout", + "Reading Option": "Možnost čtení", + "Progress": "Postup", + "Exit": "Zavřít", + "Language": "Jazyk", + "Enter Fullscreen": "Na celou obrazovku", + "Exit Fullscreen": "Ukončit režim celé obrazovky", + "Add Bookmark": "Přidat záložku", + "Add to Shelf": "Přidat na poličku", + "New Shelf": "Nová polička", + "New": "Nový", + "Cancel": "Zrušit", + "Confirm": "Potvrdit", + "Delete": "Smazat", + "Delete This Book": "Smazat knihu", + "Edit Book": "Upravit knihu", + "Edit Successfully": "Úprava byla úspěšná", + "Book Name": "Jméno knihy", + "Sort by Date": "Seřadit podle data", + "Descend": "Sestupně", + "Ascend": "Vzestupně", + "Sort by Name": "Jméno knihy", + "Token": "Token", + "Book not exist": "Kniha neexistuje", + "Please authorize your account, and fill the following box with the token": "Prosím autorizujte svůj účet a vyplňte následující pole tokenem", + "Copy Link": "Kopírovat odkaz", + "Copy Token": "Kopírovat token", + "Copied": "Zkopírováno", + "Chinese Coversion": "Konverze do čínštiny", + "Simplified To Traditional": "Ze zjednodušené do tradiční", + "Traditional To Simplified": "Z tradiční do zjednodušené", + "Shelf Title is Empty": "Název poličky je prázdný", + "Copy Link Successfully": "Odkaz úspěšně zkopírován", + "Add Successfully": "Úspěšně přidáno", + "Select": "Vybrat", + "Coming Soon": "Již brzy", + "Understand": "Rozumím", + "Authorize Successfully": "Autorizace úspěšná", + "Authorize Failed": "Autorizace neúspěšná", + "Choose your operation": "Vybrat činnost", + "Where is your data?": "Kde jsou uložena Vaše data?", + "Where to keep your data?": "Kde uchovávat Vaše data?", + "I want to backup": "Chci zálohovat", + "I want to restore": "Chci obnovit", + "Delete this shelf": "Smazat poličku", + "This action will clear and remove this shelf": "Tato akce tuto poličku odstraní", + "Delete this tag": "Odstranit tento štítek", + "This action will clear and remove this tag": "Tato akce tento štítek odstraní", + "Backup Successfully": "Zálohování úspěšné", + "Restore Successfully": "Obnovení úspěšné", + "Try refresh or restart": "Zkuste obnovit nebo restartovat", + "Search the book": "Prohledat knihu", + "Theme Color": "Barevné téma", + "Turn on text-to-speech": "Zapnout převod textu na řeč", + "Scroll Mode": "Režim posouvání", + "Loading": "Načítání", + "Note": "Poznámka", + "Page Width": "Šířka stránky", + "Digest": "Přehled", + "Auto expand content": "Automaticky rozbalit obsah", + "Hide footer": "Skrýt zápatí", + "Hide header": "Skrýt záhlaví", + "Book size is over 20M": "Velikost knihy je přes 20M", + "Current Font Size": "Aktuální velikost písma", + "Current Chapter": "Aktuální kapitola", + "Turn off text-to-speech": "Vypnout převod textu na řeč", + "Warning": "Varování", + "All Tags": "Všechny štítky", + "Turn On Successfully": "Úspěšně zapnuto", + "Turn Off Successfully": "Úspěšně vypnuto", + "Turn off touch screen mode": "Vypnout režim dotykové obrazovky", + "Use built-in font": "Použít vestavěné písmo", + "Setting": "Nastavení", + "Turn on touch screen mode": "Zapnout režim dotykové obrazovky", + "Auto open last-read book": "Automaticky otevřít naposledy čtenou knihu", + "About Project": "O projektu", + "Developer": "Vývojář", + "Please import less than 10 books": "Importujte prosím méně než 10 knih", + "Please delete some books before import": "Před importem smažte některé knihy", + "For better user experince, please visit this site on a computer": "Pro lepší uživatelský zážitek navštivte tyto stránky na počítači", + "Wrong bookmark": "Špatná záložka", + "Last Step": "Předchozí krok", + "Next Step": "Další krok", + "Go To": "Jít na", + "It seems like you're lost": "Vypadá to, že jste se ztratili", + "Return to home": "Zpět na domovskou stránku", + "Only desktop support this format": "Tento formát je podporován pouze desktopovou verzí", + "Only desktop support this service": "Tato služba je podporována pouze desktopovou verzí", + "Delete from Shelf": "Odstranit z poličky", + "Delete Successfully": "Úspěšně odstraněno", + "This action will move this book and its the notes, bookmarks and highlights of this book to the recycle bin": "Tato akce přesune knihu včetně všech poznámek, záložek a zvýraznění do koše", + "This action won't delete the original book": "Tato akce neodstraní původní knihu", + "From": "Z", + "Duplicate Book": "Duplikovat knihu", + "Unknown Chapter": "Neznámá kapitola", + "Unknown Authur": "Neznámý autor", + "Minute": "Minuta", + "Empty": "Prázdné", + "Next Chapter": "Další kapitola", + "Prev Chapter": "Předchozí kapitola", + "Less": "Méně", + "Current Reading Time": "Uplynulý čas: {{count}} minut", + "Finish Reading Time": "Zbývající čas: {{count}} minut", + "Book Page": "Strana {{count}}", + "Total books": "Celkem {{count}} knih", + "Pages": "Stránky", + "Chapters": "Kapitoly", + "Translate": "Přeložit", + "Continuous": "Plynulý", + "Scroll": "Rolovat", + "Show in the book": "Ukázat v knize", + "More Notes": "Více poznámek", + "Pick Color": "Vybrat barvu", + "Highlight Successfully": "Zvýraznění úspěšné", + "Take Note": "Vytvořit poznámku", + "Highlight": "Zvýraznit", + "Copy Successfully": "Úspěšně zkopírováno", + "Copy ": "Kopírovat", + "Text Color": "Barva textu", + "Export": "Export", + "Restore": "Obnovit", + "Publisher": "Vydavatel", + "Added at": "Přidáno", + "Margin": "Okraj", + "Do you want to open this link in browser": "Chcete tento odkaz otevřít v prohlížeči?", + "Webdav Info": "Webdav je snadno použitelné a efektivní řešení zálohy. Doporučujeme používat službu Webdav od společnosti NextCloud.", + "Please Wait a moment": "Prosím, počkejte chvíli", + "Server Address": "Adresa serveru", + "Username": "Uživatelské jméno", + "Password": "Heslo", + "Description": "Popis", + "Sort by Recent": "Nedávno přečtené", + "Collapse sidebar": "Sbalit postranní panel", + "Show sidebar": "Rozbalit postranní panel", + "Sync": "Synchronizace", + "Help": "Pomoc", + "Feedback": "Zpětná vazba", + "Github Repo": "Github Repo", + "Speak the text": "Předčítat text", + "Search on the internet": "Najít na internetu", + "Search in the book": "Najít v knize", + "Change storage location": "Změnit umístění úložiště", + "Change location": "Změnit umístění", + "Change Successfully": "Změna úspěšná", + "Too many images": "Kniha obsahuje příliš mnoho obrázků", + "Export Successfully": "Export úspěšný", + "Change Failed": "Změna se nezdařila", + "You successfully update to": "Úspěšně jste aktualizovali na", + "Deleted Books": "Koš", + "Delete All Books": "Odstranit všechny knihy", + "Sort by Duration": "Doba četby", + "Sort by Author": "Jméno autora", + "Audio is not ready yet": "Převod textu na řeč ještě není připraven", + "Drop your books here": "Sem přetáhněte své knihy", + "Sort by Percentage": "Postup v knize", + "This action will remove all the books in recycle bin,together with their notes, bookmarks and digests": "Tato akce odstraní všechny knihy z koše i s jejich poznámkami, záložkami a přehledy.", + "Batch import only support epub or pdf files": "Dávkový import podporuje pouze soubory epub nebo pdf", + "The deleted books will show up here": "Zde se zobrazí odebrané knihy", + "Empty Recycle Bin": "Prázdný koš", + "Skip": "Přeskočit", + "Local": "Lokální", + "Tips": "Tipy", + "Brightness": "Jas", + "How sync works": "Jak funguje synchronizace", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Na různých počítačích je nutné ručně změnit umístění úložiště na stejnou synchronizační složku. Po kliknutí na tlačítko synchronizace Koodo Reader automaticky nahraje nebo stáhne data z této složky dle časového razítka.", + "Line Height": "Výška řádku", + "Please turn off open books in the main window first": "Nejprve prosím zavřete otevřené knihy v hlavním okně", + "Please turn off merge with word first": "Nejprve prosím vypněte sloučení s Wordem", + "Please choose an empty folder": "Vyberte prosím prázdnou složku", + "Data change detected, whether to update?": "Zjištěna změna dat, aktualizovat?", + "Empty Library": "Prázdná knihovna", + "Download": "Stáhnout", + "Use the fonts from your local computer": "Použít písma z místního počítače", + "Backup your data with Webdav": "Zálohujte svá data pomocí Webdav", + "Click the import button to add books": "Kliknutím na tlačítko importovat přidáte knihy", + "Turn on night mode": "Zapnout noční režim", + "Turn on auto update": "Zapnout automatickou aktualizaci", + "Auto Update relys on Github Release for package hosting, if your internet doesn't have stable connection to Github, we highly recommand you to turn off this option": "Služba automatické aktualizace se při hostování balíčků spoléhá na službu Github Release, pokud váš internet nemá stabilní připojení ke Githubu, důrazně vám doporučujeme tuto možnost vypnout.", + "File size": "Velikost souboru", + "Take effect at next startup": "Změny se projeví po příštím spuštění", + "View Mode": "Režim zobrazení", + "Download Desktop Version": "Stáhnout verzi pro stolní počítače", + "No Favorite Books": "Žádné oblíbené knihy", + "Move your mouse on the top of any book, click the heart icon to add it to your favorite books": "Najeďte myší na horní část jakékoli knihy, klikněte na ikonu srdce a přidejte ji do oblíbených knih", + "Empty Reading Records": "Prázdné záznamy o čtení", + "Empty Bookmark": "Žádné záložky", + "Empty Note": "Žádné poznámky", + "Select any text and click the Note button on the popup menu": "Vyberte libovolný text a v rozbalovací nabídce klikněte na tlačítko Poznámka", + "Empty Highlight": "Žádné zvýraznění", + "Select any text and click the Highlight button on the popup menu": "Vyberte libovolný text a v rozbalovací nabídce klikněte na tlačítko Zvýraznit", + "Invert color": "Invertovat barvy", + "Empty Shelf": "Prázdná polička", + "Move your mouse on top of any book, then click the more icon to add the book to the shelf": "Najeďte myší na libovolnou knihu, a poté kliknutím na ikonu Více přidejte knihu na poličku", + "Download failed, network problem or no backup": "Stahování se nezdařilo, problém se sítí nebo žádná záloha", + "Upload failed, check your connection": "Nahrávání se nezdařilo, zkontrolujte připojení", + "Version": "Verze: ", + "Not supported yet": "Zatím není podporováno", + "Update to": "Aktualizovat na", + "Date": "Datum: ", + "Blue": "Modrá", + "Red": "Červená", + "Green": "Zelená", + "Purple": "Fialová", + "Unauthorize": "Neautorizováno", + "Remember window's size": "Zapamatovat si velikost okna", + "Letter Spacing": "Mezery mezi písmeny", + "Unauthorize Successfully": "Zrušení autorizace úspěšné", + "Download Demo Book": "Stáhnout ukázkovou knihu", + "Extra Large": "Extra velké", + "Ultra Large": "Ultra velké", + "Disable analytics service": "Zakázat službu analýzy", + "Hide navigation button": "Skrýt navigační tlačítko", + "More": "Více", + "Collect": "Sbírat", + "Copy": "Kopírovat", + "Hi! Stranger": "Ahoj cizinče!", + "Sync data from storage": "Synchronizovat data z úložiště", + "Click on any book to read": "Kliknutím na libovolnou knihu si ji můžete přečíst", + "Move your mouse on the top edge of the reader": "Přesuňte myš na horní okraj čtečky", + "Download failed,network problem or no backup": "Stahování se nezdařilo, problém se sítí nebo žádná záloha", + "Choose your action to this book": "Vyberte akci pro tuto knihu", + "Edit": "Upravit", + "Add": "Přidat", + "Survey": "Průzkum", + "What's new about this version": "Co je nového v této verzi", + "Our Website": "Naše webové stránky", + "What's New": "Co je nového", + "What's been fixed": "Co bylo opraveno", + "Target": "Cíl", + "Select All": "Vybrat vše", + "Excute Successfully": "Provedení úspěšné", + "Disable screen blanking": "Zakázat potemnění obrazovky", + "When Koodo is running, your computer won't enter sleep mode": "Když je Koodo spuštěn, počítač nepřejde do režimu spánku", + "Prevent accidental trigger": "Zabránit náhodnému spuštění", + "Import books as link": "Importovat knihy jako odkaz", + "Close main window while reading": "Při čtení zavřít hlavní okno", + "Merge reader into Word": "Sloučit čtečku s Wordem", + "Get rid of window frame, make reader hide into Word or any text editor, and can't be detected. You need to set up the reader's position, size and style first.": "Zbaví čtečku zarámování okna a skryje ji do Wordu nebo do jiného textového editoru, takže nebude rozpoznatelná. Nejprve je třeba nastavit pozici, velikost a styl čtečky.", + "The imported books will not be copied to library, only linked to the original book path": "Importované knihy se nezkopírují do knihovny, pouze se propojí s původní cestou ke knize.", + "Reader menu will not be triggered by hovering but clicking on the area": "Nabídka čtečky se nespustí najetím, ale kliknutím na oblast", + "Gesture and UI optimization for touch screen": "Optimalizace gest a uživatelského rozhraní pro dotykovou obrazovku", + "The book that you read from last time will be open automatically when launching": "Kniha, kterou jste četli naposledy, se při spuštění automaticky otevře", + "All the folded content will be expanded in the navigation panel": "Veškerý sbalený obsah se rozbalí v navigačním panelu", + "Reader window will be maximized to fit the screen when opening a book": "Okno čtečky se při otevření knihy přizpůsobí velikosti obrazovky", + "Open books in the main window": "Otevřít knihy v hlavním okně", + "Book won't be opened in a seperate window but directly opened in the main window": "Kniha se neotevře v samostatném okně, ale přímo v hlavním okně", + "Book not exsits": "Kniha neexistuje", + "Reach frequency limit": "Dosažení limitu frekvence", + "Error happens": "Chyby se stávají", + "Text Indent": "Odsazení textu", + "Deselect All": "Odznačit vše", + "Authorize": "Autorizovat", + "Open book without adding it to library": "Otevřít knihu bez přidání do knihovny", + "When opening books in the file manager with Koodo, the opened books won't be added to the library": "Při otevření knih ve správci souborů pomocí aplikace Koodo se otevřené knihy nepřidají do knihovny", + "Hide menu button": "Skrýt tlačítko nabídky", + "Manage": "Spravovat", + "Sliding Animation": "Posuvná animace", + "Please turn off open books in the main window": "Vypněte prosím otevřené knihy v hlavním okně", + "This action will delete all the notes, bookmarks and digests of this book": "Tato akce smaže všechny poznámky, záložky a výtahy této knihy.", + "More formats supported": "Více podporovaných formátů", + "Koodo Reader's web version are limited by the browser, for more powerful features, please download the desktop version.": "Webová verze aplikace Koodo Reader je omezena prohlížečem. Pro výkonnější funkce si stáhněte verzi pro stolní počítače.", + "Chinese Conversion": "Konverze čínštiny", + "Use first page as PDF cover": "Použít první stránku jako obálku PDF", + "You may see this error when the book you're importing is not supported by Koodo Reader, try converting it with Calibre": "Tato chyba se může zobrazit, pokud importovaná kniha není podporována programem Koodo Reader, zkuste ji převést pomocí Calibre", + "Shelf title can't be pure number": "Název police nemůže být čistě číselný", + "Open Console": "Otevřít konzolu", + "Appearance": "Vzhled", + "Light Mode": "Světlý režim", + "Night Mode": "Tmavý režim", + "Follow OS": "Přizpůsobit systému", + "Open url with built-in browser": "Otevřít adresu URL pomocí vestavěného prohlížeče" +} diff --git a/src/assets/locales/de/translation.json b/src/assets/locales/de/translation.json index 978bea4b..8affda6b 100644 --- a/src/assets/locales/de/translation.json +++ b/src/assets/locales/de/translation.json @@ -1,342 +1,342 @@ { - "Books": "Bücher", - "Recent": "Kürzlich", - "Bookmarks": "Lesezeichen", - "Favorites": "Favoriten", - "Notes": "Notizen", - "Highlights": "Highlights", - "Shelf": "Regal", - "Left": "Links", - "Justify": "Rechts", - "Right": "Rechts", - "Text Align": "Textausrichtung", - "Sync Successfully": "Synchronisieren erfolgreich", - "Permanently Delete": "Dauerhaft entfernen", - "Default search engine": "Standard Suchmaschine", - "Built-in font": "Eingebaute Schrift", - "Cover": "Titelansicht", - "Bold": "Fett", - "Sort by": "Sortieren nach", - "Italic": "Kursiv", - "Text underline": "Unterstreichen", - "Text shadow": "Textschatten", - "Import Failed": "Import fehlgeschlagen", - "New Version Available": "Neue Version verfügbar", - "New Version": "Neue Version", - "Customize": "Anpassen", - "Auto open book in fullscreen": "Buch automatisch im Vollbildmodus öffnen", - "System Font": "Systemschrift", - "Access token expired, refetching token": "Zugriffstoken abgelaufen, Token neu abholen", - "Access token received, please continue": "Zugriffstoken empfangen, bitte weitermachen", - "Changelog": "Änderungsprotokoll", - "Update Complete": "Update vollständig", - "Fetching acess token failed": "Abholen des Zugrifftokens fehlgeschlagen", - "Authorizing, please wait": "Autorisiere, bitte warten", - "Downloading, please wait": "Lade herunter, bitte warten", - "Uploading, please wait": "Lade hoch, bitte warten", - "Import": "Importieren", - "Backup": "Backup", - "Search my library": "Bibliothek durchsuchen", - "Search my notes": "Notizen durchsuchen", - "Search my highlights": "Highlights durchsuchen", - "Card": "Kartenansicht", - "List": "Listenansicht", - "Work": "Arbeit", - "Entertainment": "Unterhaltung", - "Study": "Studium", - "Author": "Autor", - "Duplicate Shelf": "Regal duplizieren", - "Reading Time": "Lesezeit", - "Content": "Inhalt", - "Voice": "Stimme", - "Speed": "Geschwindigkeit", - "Bookmark": "Lesezeichen", - "Single-Page Mode": "Einzeln", - "Double-Page Mode": "Verdoppeln", - "Background Color": "Hintergrundfarbe", - "Font Size": "Schriftgröße", - "Font Family": "Schriftart", - "Default": "Standard", - "Small": "klein", - "Medium": "normal", - "Large": "groß", - "Cancel Successfully": "Abbruch erfolgreich", - "Only supported by desktop version": "Nur in der Desktop-Version unterstützt", - "Hide mimical background": "Nachahm-Hintergrund verstecken", - "Auto hide cursor when reading": "Zeiger beim lesen automatisch ausblenden", - "Disable update notification": "Updatebenachrichtigung abschalten", - "Roadmap": "Fahrplan", - "Paragraph Spacing": "Absatzabstand", - "Unlock": "Entsperren", - "Lock": "Sperren", - "Reading Option": "Leseoption", - "Progress": "Fortschritt", - "Exit": "Exit", - "Language": "Sprache", - "Enter Fullscreen": "Vollbild", - "Exit Fullscreen": "Vollbildmodus verlassen", - "Add Bookmark": "Lesezeichen hinzufügen", - "Add to Shelf": "Zum Regal hinzufügen", - "New Shelf": "Neues Regal", - "New": "Neu", - "Cancel": "Abbrechen", - "Confirm": "Bestätigen", - "Delete": "Löschen", - "Delete This Book": "Buch löschen", - "Edit Book": "Buch bearbeiten", - "Edit Successfully": "Bearbeitung erfolgreich", - "Book Name": "Name des Buches", - "Sort by Date": "Zeit hinzufügen", - "Descend": "Absteigend", - "Ascend": "Aufsteigend", - "Sort by Name": "Name des Buches", - "Token": "Token", - "Book not exist": "Buch existiert nicht", - "Please authorize your account, and fill the following box with the token": "Bitte autorisieren Sie Ihr Konto, und geben Sie den Token in das folgende Feld ein", - "Copy Link": "Link kopieren", - "Copy Token": "Token kopieren", - "Copied": "Kopiert", - "Chinese Coversion": "Chinesische Übersetzung", - "Simplified To Traditional": "Vereinfacht zu Üblich", - "Traditional To Simplified": "Üblich zu Vereinfacht", - "Shelf Title is Empty": "Regaltitel ist leer", - "Copy Link Successfully": "Link erfolgreich kopiert", - "Add Successfully": "Hinzufügen erfolgreich", - "Select": "Auswählen", - "Coming Soon": "Kommt bald", - "Understand": "Verstehen", - "Authorize Successfully": "Autorisierung erfolgreich", - "Authorize Failed": "Autorisierung fehlgeschlagen", - "Choose your operation": "Tätigkeit auswählen", - "Where is your data?": "Wo sind Ihre Daten?", - "Where to keep your data?": "Wo Ihre Daten aufbewahren?", - "I want to backup": "Backup", - "I want to restore": "Wiederherstellen", - "Delete this shelf": "Regal entfernen", - "This action will clear and remove this shelf": "Diese Aktion löscht und entfernt das Regal", - "Delete this tag": "Etikett entfernen", - "This action will clear and remove this tag": "Diese Aktion entfernt dieses Etikett", - "Backup Successfully": "Backup erfolgreich", - "Restore Successfully": "Wiederherstellung erfolgreich", - "Try refresh or restart": "Aktualisieren oder Neustarten versuchen", - "Search the book": "Buch durchsuchen", - "Theme Color": "Themenfarbe", - "Turn on text-to-speech": "Text-zu-Sprache einschalten", - "Scroll Mode": "Rollmodus", - "Loading": "Lade", - "Note": "Notiz", - "Page Width": "Seitenbreite", - "Digest": "Auszug", - "Auto expand content": "Inhalt automatisch erweitern", - "Hide footer": "Fußzeile verstecken", - "Hide header": "Kopfzeile verstecken", - "Book size is over 20M": "Buchgröße ist über 20M", - "Current Font Size": "Aktuelle Schriftgröße", - "Current Chapter": "Aktuelles Kapitel", - "Turn off text-to-speech": "Text-zu-Sprache ausschalten", - "Warning": "Warnung", - "All Tags": "Alle Etiketten", - "Turn On Successfully": "Einschalten erfolgreich", - "Turn Off Successfully": "Ausschalten erfolgreich", - "Turn off touch screen mode": "Touchscreen-Modus ausschalten (versehentliches Berühren vermeiden)", - "Use built-in font": "Eingebaute Schriftart benutzen", - "Setting": "Einstellungen", - "Turn on touch screen mode": "Touchscreen-Modus einschalten", - "Auto open last-read book": "Zuletzt gelesenes Buch automatisch öffnen", - "About Project": "Über das Projekt", - "Developer": "Entwickler", - "Please import less than 10 books": "Bitte weniger als 10 Bücher importieren", - "Please delete some books before import": "Bitte einige Bücher entfernen vor dem Importieren", - "For better user experince, please visit this site on a computer": "Für eine bessere Benutzererfahrung rufen Sie diese Seite auf einem Computer auf.", - "Wrong bookmark": "Falsches Lesezeichen", - "Last Step": "Vorhergehender Schritt", - "Next Step": "Nächster Schritt", - "Go To": "Gehe zu", - "It seems like you're lost": "Sieht so aus, als wären Sie verloren", - "Return to home": "Zurück zur Startseite", - "Only desktop support this format": "Nur Desktop unterstützt dieses Format", - "Only desktop support this service": "Nur Desktop unterstützt diesen Dienst", - "Delete from Shelf": "Vom Regal entfernen", - "Delete Successfully": "Entfernen erfolgreich", - "This action will move this book and its the notes, bookmarks and highlights of this book to the recycle bin": "Diese Aktion verschiebt das Buch, dessen Notizen, Lesezeichen und Hervorhebungen in den Müll.", - "This action won't delete the original book": "Diese Aktion entfernt nicht das originale Buch", - "From": "Von", - "Duplicate Book": "Buch duplizieren", - "Unknown Chapter": "Kapitel unbekannt", - "Unknown Authur": "Autor unbekannt", - "Minute": "Minute", - "Empty": "Leer", - "Next Chapter": "Nächstes Kapitel", - "Prev Chapter": "Voriges Kapitel", - "Less": "Weniger", - "Current Reading Time": "Abgelaufene Zeit: {{count}} Minutes", - "Finish Reading Time": "Verbleibende Zeit: {{count}} Minutes", - "Book Page": "Seite {{count}}", - "Total books": "Gesamt {{count}} Bücher", - "Pages": "Seiten", - "Chapters": "Kapitel", - "Translate": "Übersetzen", - "Continuous": "Laufend", - "Scroll": "Rollen", - "Show in the book": "Im Buch zeigen", - "More Notes": "Mehr Notizen", - "Pick Color": "Farbe wählen", - "Highlight Successfully": "Hervorheben erfolgreich", - "Take Note": "Notiz erstellen", - "Highlight": "Hervorheben", - "Copy Successfully": "Kopieren erfolgreich", - "Copy ": "Kopieren", - "Text Color": "Textfarbe", - "Export": "Exportieren", - "Restore": "Wiederherstellen", - "Publisher": "Herausgeber", - "Added at": "Hinzugefügt am", - "Margin": "Rand", - "Do you want to open this link in browser": "Möchten Sie diesen Link im Browser öffnen?", - "Webdav Info": "Webdav ist eine einfach zu nützende und effiziente Backup-Lösung. Wir empfehlen Webdav service von NextCloud zu benützen.", - "Please Wait a moment": "Bitte einen Moment warten", - "Server Address": "Server-Adresse", - "Username": "Benutzername", - "Password": "Passwort", - "Description": "Beschreibung", - "Sort by Recent": "Kürzlich gelesen", - "Collapse sidebar": "Sidebar schließen", - "Show sidebar": "Sidebar anzeigen", - "Sync": "Synchronisieren", - "Help": "Dokument", - "Feedback": "Feedback", - "Github Repo": "Github Repo", - "Speak the text": "Text sprechen", - "Search on the internet": "Im Internet suchen", - "Search in the book": "Im Buch suchen", - "Change storage location": "Speicherort ändern", - "Change location": "Ändern", - "Change Successfully": "Änderung erfolgreich", - "Too many images": "Das Buch beinhaltet zu viele Bilder", - "Export Successfully": "Export erfolgreich", - "Change Failed": "Änderung fehlgeschlagen", - "You successfully update to": "Sie haben erfolgreich aktualisiert auf", - "Deleted Books": "Müll", - "Delete All Books": "Alle Bücher entfernen", - "Sort by Duration": "Lesedauer", - "Sort by Author": "Name des Autors", - "Audio is not ready yet": "Text-zu-Sprache ist noch nicht bereit", - "Drop your books here": "Ziehen Sie Ihre Bücher hierher", - "Sort by Percentage": "Lesefortschritt", - "This action will remove all the books in recycle bin,together with their notes, bookmarks and digests": "Diese Aktion entfernt dauerhaft alle Bücher im Müll, einschließlich deren Notizen, Lesezeichen und Auszüge.", - "Batch import only support epub or pdf files": "Stapelimport unterstützt nur epub oder pdf-dateien", - "The deleted books will show up here": "Die entfernten Bücher werden hier angezeigt", - "Empty Recycle Bin": "Leerer Müll", - "Skip": "Überspringen", - "Local": "Lokal", - "Tips": "Tipps", - "Brightness": "Helligkeit", - "How sync works": "Wie synchronisieren funktioniert", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Sie müssen den Speicherort auf verschiedenen Computern in denselben Cloud Drive-Ordner ändern. Wenn Sie auf die Schaltfläche \"Synchronisieren\" klicken, wird Koodo Reader automatisch Ihre Daten aus diesem Ordner hoch- oder herunterladen und die Daten auf allen Ihren Computern synchronisieren. Besuchen Sie unser Dokument für weitere Anweisungen.", - "Line Height": "Zeilenhöhe", - "Please turn off open books in the main window first": "Bitte schalten Sie zuerst die offenen Bücher im Hauptfenster aus", - "Please turn off merge with word first": "Bitte schalten Sie zuerst die Zusammenführung mit Word aus", - "Please choose an empty folder": "Bitte wählen Sie einen leeren Ordner", - "Data change detected, whether to update?": "Datenänderung erkannt, aktualisieren?", - "Empty Library": "Leere Bibliothek", - "Download": "Herunterladen", - "Use the fonts from your local computer": "Schriftarten vom lokalen Computer benutzen", - "Backup your data with Webdav": "Daten mit Webdav sichern", - "Click the import button to add books": "Klicken Sie auf die Schaltfläche Importieren, um Bücher hinzuzufügen", - "Turn on night mode": "Nachtmodus einschalten", - "Turn on auto update": "Automatisches Aktualisieren einschalten", - "Auto Update relys on Github Release for package hosting, if your internet doesn't have stable connection to Github, we highly recommand you to turn off this option": "Auto Update verlässt sich auf Github Release für das Paket-Hosting. Wenn Ihr Internet keine stabile Verbindung zu Github hat, empfehlen wir Ihnen dringend, diese Option zu deaktivieren", - "File size": "Dateigröße", - "Take effect at next startup": "Änderungen beim nächsten Neustart aktivieren", - "View Mode": "Ansichtsmodus", - "Download Desktop Version": "Desktop-Version herunterladen", - "No Favorite Books": "Keine Lieblingsbücher", - "Move your mouse on the top of any book, click the heart icon to add it to your favorite books": "Bewegen Sie die Maus über ein beliebiges Buch und klicken Sie auf das Herzsymbol, um es zu Ihren Lieblingsbüchern hinzuzufügen", - "Empty Reading Records": "Leere Leseaufzeichnungen", - "Empty Bookmark": "Keine Lesezeichen", - "Empty Note": "Keine Notizen", - "Select any text and click the Note button on the popup menu": "Markieren Sie einen beliebigen Text und klicken Sie im Popup-Menü auf die Schaltfläche Notiz", - "Empty Highlight": "Keine Hervorhebungen", - "Select any text and click the Highlight button on the popup menu": "Markieren Sie einen beliebigen Text und klicken Sie im Popup-Menü auf die Schaltfläche Highlight", - "Invert color": "Farben invertieren", - "Empty Shelf": "Leeres Regal", - "Move your mouse on top of any book, then click the more icon to add the book to the shelf": "Bewegen Sie die Maus über ein beliebiges Buch und klicken Sie dann auf das Symbol \"Mehr\", um das Buch dem Regal hinzuzufügen", - "Download failed, network problem or no backup": "Download fehlgeschlagen, Netzwerkproblem oder keine Sicherung", - "Upload failed, check your connection": "Hochladen fehlgeschlagen, bitte Verbindung checken", - "Version": "Version: ", - "Not supported yet": "Derzeit nicht unterstützt", - "Update to": "Aktualisieren auf", - "Date": "Datum: ", - "Blue": "Blau", - "Red": "Rot", - "Green": "Grün", - "Purple": "Violett", - "Unauthorize": "Unterlaubt", - "Remember window's size": "Fenstergrösse erinnern", - "Letter Spacing": "Buchstaben abstand", - "Unauthorize Successfully": "Unerlaubt erfolgreich", - "Download Demo Book": "Demo-Buch herunterladen", - "Extra Large": "Extragroß", - "Ultra Large": "Extragroß", - "Disable analytics service": "Analysedienst deaktivieren", - "Hide navigation button": "Navigations-Button verstecken", - "More": "Mehr", - "Collect": "Sammeln", - "Copy": "Kopieren", - "Hi! Stranger": "Hallo! Fremder", - "Sync data from storage": "Daten vom Speicher synchronisieren", - "Click on any book to read": "zum lesen Buch anklicken", - "Move your mouse on the top edge of the reader": "Bewegen Sie die Maus auf den oberen Rand des Lesegeräts", - "Download failed,network problem or no backup": "Download fehlgeschlagen, Netzwerkproblem oder keine Sicherung", - "Choose your action to this book": "Wählen Sie Ihre Aktion zu diesem Buch", - "Edit": "Bearbeiten", - "Add": "Hinzufügen", - "Survey": "überwachen", - "What's new about this version": "Was ist neu in dieser Version", - "Our Website": "Unsere Website", - "What's New": "Was ist neu", - "What's been fixed": "Was wurde gefixed", - "Target": "Ziel", - "Select All": "Alles auswählen", - "Excute Successfully": "Ausführung erfolgreich", - "Disable screen blanking": "Bildschirmausblendung deaktivieren", - "When Koodo is running, your computer won't enter sleep mode": "Wenn Kodoo läuft, geht Ihr Computer nicht in den Ruhezustand", - "Prevent accidental trigger": "Unbeabsichtigtes Auslösen verhindern", - "Import books as link": "Bücher als link importieren", - "Close main window while reading": "Hauptfenster während des Lesens schließen", - "Merge reader into Word": "Reader in Word einbinden", - "Get rid of window frame, make reader hide into Word or any text editor, and can't be detected. You need to set up the reader's position, size and style first.": "Entfernen Sie den Fensterrahmen, so dass der Reader in Word oder einem anderen Texteditor versteckt und nicht erkannt werden kann. Sie müssen zuerst die Position, die Größe und den Stil des Readers einstellen.", - "The imported books will not be copied to library, only linked to the original book path": "Die importierten Bücher werden nicht in die Bibliothek kopiert, sondern nur zum originalen Buchpfad verlinkt.", - "Reader menu will not be triggered by hovering but clicking on the area": "Das Reader-Menü wird nicht durch Berühren, sondern durch Klicken auf den Bereich ausgelöst", - "Gesture and UI optimization for touch screen": "Gesten- und UI-Optimierung für Touchscreens", - "The book that you read from last time will be open automatically when launching": "Das Buch, das Sie beim letzten Mal gelesen haben, wird beim Starten automatisch geöffnet", - "All the folded content will be expanded in the navigation panel": "Der gesamte eingeklappte Inhalt wird im Navigationsbereich erweitert", - "Reader window will be maximized to fit the screen when opening a book": "Lesefenster wird beim Öffnen eines Buches an Bildschirmgröße angepasst", - "Open books in the main window": "Öffne Bücher im Hauptfenster", - "Book won't be opened in a seperate window but directly opened in the main window": "Das Buch wird nicht in einem separaten Fenster geöffnet, sondern direkt im Hauptfenster", - "Book not exsits": "Buch existiert nicht", - "Reach frequency limit": "Erreichen der Frequenzgrenze", - "Error happens": "Fehler passieren", - "Text Indent": "Texteinrückung", - "Deselect All": "Alle abwählen", - "Authorize": "Autorisieren", - "Open book without adding it to library": "Öffne Buch ohne es zur Bibliothek hinzuzufügen", - "When opening books in the file manager with Koodo, the opened books won't be added to the library": "Beim Öffnen von Büchern im Dateimanager mit Koodo werden die geöffneten Bücher nicht zur Bibliothek hinzugefügt", - "Hide menu button": "Menü-Button verstecken", - "Manage": "Verwalten", - "Sliding Animation": "Gleitende Animation", - "Please turn off open books in the main window": "Bitte schalten Sie offene Bücher im Hauptfenster aus", - "This action will delete all the notes, bookmarks and digests of this book": "Diese Aktion entfernt alle Notizen, Lesezeichen und Auszüge dieses Buches.", - "More formats supported": "Mehr Formate unterstützt", - "Koodo Reader's web version are limited by the browser, for more powerful features, please download the desktop version.": "Koodo Reader's Internetversion ist limitiert durch den Browser. Für mehr features, laden Sie bitte die Desktop-Version herunter.", - "Chinese Conversion": "Chinesische Konvertierung", - "Use first page as PDF cover": "Erste Seite als PDF-Deckblatt verwenden", - "You may see this error when the book you're importing is not supported by Koodo Reader, try converting it with Calibre": "Dieser Fehler kann auftreten, wenn das Buch, das Sie importieren, nicht von Koodo Reader unterstützt wird. Versuchen Sie es mit Calibre zu konvertieren", - "Shelf title can't be pure number": "Der Regaltitel kann keine bloße Zahl sein", - "Open Console": "Konsole öffnen", - "Appearance": "Erscheinungsbild", - "Light Mode": "Licht-Modus", - "Night Mode": "Nacht-Modus", - "Follow OS": "Modus nach OS", - "Open url with built-in browser": "Url mit eingebautem Browser öffnen" -} \ No newline at end of file + "Books": "Bücher", + "Recent": "Kürzlich", + "Bookmarks": "Lesezeichen", + "Favorites": "Favoriten", + "Notes": "Notizen", + "Highlights": "Highlights", + "Shelf": "Regal", + "Left": "Links", + "Justify": "Rechts", + "Right": "Rechts", + "Text Align": "Textausrichtung", + "Sync Successfully": "Synchronisieren erfolgreich", + "Permanently Delete": "Dauerhaft entfernen", + "Default search engine": "Standard Suchmaschine", + "Built-in font": "Eingebaute Schrift", + "Cover": "Titelansicht", + "Bold": "Fett", + "Sort by": "Sortieren nach", + "Italic": "Kursiv", + "Text underline": "Unterstreichen", + "Text shadow": "Textschatten", + "Import Failed": "Import fehlgeschlagen", + "New Version Available": "Neue Version verfügbar", + "New Version": "Neue Version", + "Customize": "Anpassen", + "Auto open book in fullscreen": "Buch automatisch im Vollbildmodus öffnen", + "System Font": "Systemschrift", + "Access token expired, refetching token": "Zugriffstoken abgelaufen, Token neu abholen", + "Access token received, please continue": "Zugriffstoken empfangen, bitte weitermachen", + "Changelog": "Änderungsprotokoll", + "Update Complete": "Update vollständig", + "Fetching acess token failed": "Abholen des Zugrifftokens fehlgeschlagen", + "Authorizing, please wait": "Autorisiere, bitte warten", + "Downloading, please wait": "Lade herunter, bitte warten", + "Uploading, please wait": "Lade hoch, bitte warten", + "Import": "Importieren", + "Backup": "Backup", + "Search my library": "Bibliothek durchsuchen", + "Search my notes": "Notizen durchsuchen", + "Search my highlights": "Highlights durchsuchen", + "Card": "Kartenansicht", + "List": "Listenansicht", + "Work": "Arbeit", + "Entertainment": "Unterhaltung", + "Study": "Studium", + "Author": "Autor", + "Duplicate Shelf": "Regal duplizieren", + "Reading Time": "Lesezeit", + "Content": "Inhalt", + "Voice": "Stimme", + "Speed": "Geschwindigkeit", + "Bookmark": "Lesezeichen", + "Single-Page Mode": "Einzeln", + "Double-Page Mode": "Verdoppeln", + "Background Color": "Hintergrundfarbe", + "Font Size": "Schriftgröße", + "Font Family": "Schriftart", + "Default": "Standard", + "Small": "klein", + "Medium": "normal", + "Large": "groß", + "Cancel Successfully": "Abbruch erfolgreich", + "Only supported by desktop version": "Nur in der Desktop-Version unterstützt", + "Hide mimical background": "Nachahm-Hintergrund verstecken", + "Auto hide cursor when reading": "Zeiger beim lesen automatisch ausblenden", + "Disable update notification": "Updatebenachrichtigung abschalten", + "Roadmap": "Fahrplan", + "Paragraph Spacing": "Absatzabstand", + "Unlock": "Entsperren", + "Lock": "Sperren", + "Reading Option": "Leseoption", + "Progress": "Fortschritt", + "Exit": "Exit", + "Language": "Sprache", + "Enter Fullscreen": "Vollbild", + "Exit Fullscreen": "Vollbildmodus verlassen", + "Add Bookmark": "Lesezeichen hinzufügen", + "Add to Shelf": "Zum Regal hinzufügen", + "New Shelf": "Neues Regal", + "New": "Neu", + "Cancel": "Abbrechen", + "Confirm": "Bestätigen", + "Delete": "Löschen", + "Delete This Book": "Buch löschen", + "Edit Book": "Buch bearbeiten", + "Edit Successfully": "Bearbeitung erfolgreich", + "Book Name": "Name des Buches", + "Sort by Date": "Zeit hinzufügen", + "Descend": "Absteigend", + "Ascend": "Aufsteigend", + "Sort by Name": "Name des Buches", + "Token": "Token", + "Book not exist": "Buch existiert nicht", + "Please authorize your account, and fill the following box with the token": "Bitte autorisieren Sie Ihr Konto, und geben Sie den Token in das folgende Feld ein", + "Copy Link": "Link kopieren", + "Copy Token": "Token kopieren", + "Copied": "Kopiert", + "Chinese Coversion": "Chinesische Übersetzung", + "Simplified To Traditional": "Vereinfacht zu Üblich", + "Traditional To Simplified": "Üblich zu Vereinfacht", + "Shelf Title is Empty": "Regaltitel ist leer", + "Copy Link Successfully": "Link erfolgreich kopiert", + "Add Successfully": "Hinzufügen erfolgreich", + "Select": "Auswählen", + "Coming Soon": "Kommt bald", + "Understand": "Verstehen", + "Authorize Successfully": "Autorisierung erfolgreich", + "Authorize Failed": "Autorisierung fehlgeschlagen", + "Choose your operation": "Tätigkeit auswählen", + "Where is your data?": "Wo sind Ihre Daten?", + "Where to keep your data?": "Wo Ihre Daten aufbewahren?", + "I want to backup": "Backup", + "I want to restore": "Wiederherstellen", + "Delete this shelf": "Regal entfernen", + "This action will clear and remove this shelf": "Diese Aktion löscht und entfernt das Regal", + "Delete this tag": "Etikett entfernen", + "This action will clear and remove this tag": "Diese Aktion entfernt dieses Etikett", + "Backup Successfully": "Backup erfolgreich", + "Restore Successfully": "Wiederherstellung erfolgreich", + "Try refresh or restart": "Aktualisieren oder Neustarten versuchen", + "Search the book": "Buch durchsuchen", + "Theme Color": "Themenfarbe", + "Turn on text-to-speech": "Text-zu-Sprache einschalten", + "Scroll Mode": "Rollmodus", + "Loading": "Lade", + "Note": "Notiz", + "Page Width": "Seitenbreite", + "Digest": "Auszug", + "Auto expand content": "Inhalt automatisch erweitern", + "Hide footer": "Fußzeile verstecken", + "Hide header": "Kopfzeile verstecken", + "Book size is over 20M": "Buchgröße ist über 20M", + "Current Font Size": "Aktuelle Schriftgröße", + "Current Chapter": "Aktuelles Kapitel", + "Turn off text-to-speech": "Text-zu-Sprache ausschalten", + "Warning": "Warnung", + "All Tags": "Alle Etiketten", + "Turn On Successfully": "Einschalten erfolgreich", + "Turn Off Successfully": "Ausschalten erfolgreich", + "Turn off touch screen mode": "Touchscreen-Modus ausschalten (versehentliches Berühren vermeiden)", + "Use built-in font": "Eingebaute Schriftart benutzen", + "Setting": "Einstellungen", + "Turn on touch screen mode": "Touchscreen-Modus einschalten", + "Auto open last-read book": "Zuletzt gelesenes Buch automatisch öffnen", + "About Project": "Über das Projekt", + "Developer": "Entwickler", + "Please import less than 10 books": "Bitte weniger als 10 Bücher importieren", + "Please delete some books before import": "Bitte einige Bücher entfernen vor dem Importieren", + "For better user experince, please visit this site on a computer": "Für eine bessere Benutzererfahrung rufen Sie diese Seite auf einem Computer auf.", + "Wrong bookmark": "Falsches Lesezeichen", + "Last Step": "Vorhergehender Schritt", + "Next Step": "Nächster Schritt", + "Go To": "Gehe zu", + "It seems like you're lost": "Sieht so aus, als wären Sie verloren", + "Return to home": "Zurück zur Startseite", + "Only desktop support this format": "Nur Desktop unterstützt dieses Format", + "Only desktop support this service": "Nur Desktop unterstützt diesen Dienst", + "Delete from Shelf": "Vom Regal entfernen", + "Delete Successfully": "Entfernen erfolgreich", + "This action will move this book and its the notes, bookmarks and highlights of this book to the recycle bin": "Diese Aktion verschiebt das Buch, dessen Notizen, Lesezeichen und Hervorhebungen in den Müll.", + "This action won't delete the original book": "Diese Aktion entfernt nicht das originale Buch", + "From": "Von", + "Duplicate Book": "Buch duplizieren", + "Unknown Chapter": "Kapitel unbekannt", + "Unknown Authur": "Autor unbekannt", + "Minute": "Minute", + "Empty": "Leer", + "Next Chapter": "Nächstes Kapitel", + "Prev Chapter": "Voriges Kapitel", + "Less": "Weniger", + "Current Reading Time": "Abgelaufene Zeit: {{count}} Minutes", + "Finish Reading Time": "Verbleibende Zeit: {{count}} Minutes", + "Book Page": "Seite {{count}}", + "Total books": "Gesamt {{count}} Bücher", + "Pages": "Seiten", + "Chapters": "Kapitel", + "Translate": "Übersetzen", + "Continuous": "Laufend", + "Scroll": "Rollen", + "Show in the book": "Im Buch zeigen", + "More Notes": "Mehr Notizen", + "Pick Color": "Farbe wählen", + "Highlight Successfully": "Hervorheben erfolgreich", + "Take Note": "Notiz erstellen", + "Highlight": "Hervorheben", + "Copy Successfully": "Kopieren erfolgreich", + "Copy ": "Kopieren", + "Text Color": "Textfarbe", + "Export": "Exportieren", + "Restore": "Wiederherstellen", + "Publisher": "Herausgeber", + "Added at": "Hinzugefügt am", + "Margin": "Rand", + "Do you want to open this link in browser": "Möchten Sie diesen Link im Browser öffnen?", + "Webdav Info": "Webdav ist eine einfach zu nützende und effiziente Backup-Lösung. Wir empfehlen Webdav service von NextCloud zu benützen.", + "Please Wait a moment": "Bitte einen Moment warten", + "Server Address": "Server-Adresse", + "Username": "Benutzername", + "Password": "Passwort", + "Description": "Beschreibung", + "Sort by Recent": "Kürzlich gelesen", + "Collapse sidebar": "Sidebar schließen", + "Show sidebar": "Sidebar anzeigen", + "Sync": "Synchronisieren", + "Help": "Dokument", + "Feedback": "Feedback", + "Github Repo": "Github Repo", + "Speak the text": "Text sprechen", + "Search on the internet": "Im Internet suchen", + "Search in the book": "Im Buch suchen", + "Change storage location": "Speicherort ändern", + "Change location": "Ändern", + "Change Successfully": "Änderung erfolgreich", + "Too many images": "Das Buch beinhaltet zu viele Bilder", + "Export Successfully": "Export erfolgreich", + "Change Failed": "Änderung fehlgeschlagen", + "You successfully update to": "Sie haben erfolgreich aktualisiert auf", + "Deleted Books": "Müll", + "Delete All Books": "Alle Bücher entfernen", + "Sort by Duration": "Lesedauer", + "Sort by Author": "Name des Autors", + "Audio is not ready yet": "Text-zu-Sprache ist noch nicht bereit", + "Drop your books here": "Ziehen Sie Ihre Bücher hierher", + "Sort by Percentage": "Lesefortschritt", + "This action will remove all the books in recycle bin,together with their notes, bookmarks and digests": "Diese Aktion entfernt dauerhaft alle Bücher im Müll, einschließlich deren Notizen, Lesezeichen und Auszüge.", + "Batch import only support epub or pdf files": "Stapelimport unterstützt nur epub oder pdf-dateien", + "The deleted books will show up here": "Die entfernten Bücher werden hier angezeigt", + "Empty Recycle Bin": "Leerer Müll", + "Skip": "Überspringen", + "Local": "Lokal", + "Tips": "Tipps", + "Brightness": "Helligkeit", + "How sync works": "Wie synchronisieren funktioniert", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Sie müssen den Speicherort auf verschiedenen Computern in denselben Cloud Drive-Ordner ändern. Wenn Sie auf die Schaltfläche \"Synchronisieren\" klicken, wird Koodo Reader automatisch Ihre Daten aus diesem Ordner hoch- oder herunterladen und die Daten auf allen Ihren Computern synchronisieren. Besuchen Sie unser Dokument für weitere Anweisungen.", + "Line Height": "Zeilenhöhe", + "Please turn off open books in the main window first": "Bitte schalten Sie zuerst die offenen Bücher im Hauptfenster aus", + "Please turn off merge with word first": "Bitte schalten Sie zuerst die Zusammenführung mit Word aus", + "Please choose an empty folder": "Bitte wählen Sie einen leeren Ordner", + "Data change detected, whether to update?": "Datenänderung erkannt, aktualisieren?", + "Empty Library": "Leere Bibliothek", + "Download": "Herunterladen", + "Use the fonts from your local computer": "Schriftarten vom lokalen Computer benutzen", + "Backup your data with Webdav": "Daten mit Webdav sichern", + "Click the import button to add books": "Klicken Sie auf die Schaltfläche Importieren, um Bücher hinzuzufügen", + "Turn on night mode": "Nachtmodus einschalten", + "Turn on auto update": "Automatisches Aktualisieren einschalten", + "Auto Update relys on Github Release for package hosting, if your internet doesn't have stable connection to Github, we highly recommand you to turn off this option": "Auto Update verlässt sich auf Github Release für das Paket-Hosting. Wenn Ihr Internet keine stabile Verbindung zu Github hat, empfehlen wir Ihnen dringend, diese Option zu deaktivieren", + "File size": "Dateigröße", + "Take effect at next startup": "Änderungen beim nächsten Neustart aktivieren", + "View Mode": "Ansichtsmodus", + "Download Desktop Version": "Desktop-Version herunterladen", + "No Favorite Books": "Keine Lieblingsbücher", + "Move your mouse on the top of any book, click the heart icon to add it to your favorite books": "Bewegen Sie die Maus über ein beliebiges Buch und klicken Sie auf das Herzsymbol, um es zu Ihren Lieblingsbüchern hinzuzufügen", + "Empty Reading Records": "Leere Leseaufzeichnungen", + "Empty Bookmark": "Keine Lesezeichen", + "Empty Note": "Keine Notizen", + "Select any text and click the Note button on the popup menu": "Markieren Sie einen beliebigen Text und klicken Sie im Popup-Menü auf die Schaltfläche Notiz", + "Empty Highlight": "Keine Hervorhebungen", + "Select any text and click the Highlight button on the popup menu": "Markieren Sie einen beliebigen Text und klicken Sie im Popup-Menü auf die Schaltfläche Highlight", + "Invert color": "Farben invertieren", + "Empty Shelf": "Leeres Regal", + "Move your mouse on top of any book, then click the more icon to add the book to the shelf": "Bewegen Sie die Maus über ein beliebiges Buch und klicken Sie dann auf das Symbol \"Mehr\", um das Buch dem Regal hinzuzufügen", + "Download failed, network problem or no backup": "Download fehlgeschlagen, Netzwerkproblem oder keine Sicherung", + "Upload failed, check your connection": "Hochladen fehlgeschlagen, bitte Verbindung checken", + "Version": "Version: ", + "Not supported yet": "Derzeit nicht unterstützt", + "Update to": "Aktualisieren auf", + "Date": "Datum: ", + "Blue": "Blau", + "Red": "Rot", + "Green": "Grün", + "Purple": "Violett", + "Unauthorize": "Unterlaubt", + "Remember window's size": "Fenstergrösse erinnern", + "Letter Spacing": "Buchstaben abstand", + "Unauthorize Successfully": "Unerlaubt erfolgreich", + "Download Demo Book": "Demo-Buch herunterladen", + "Extra Large": "Extragroß", + "Ultra Large": "Extragroß", + "Disable analytics service": "Analysedienst deaktivieren", + "Hide navigation button": "Navigations-Button verstecken", + "More": "Mehr", + "Collect": "Sammeln", + "Copy": "Kopieren", + "Hi! Stranger": "Hallo! Fremder", + "Sync data from storage": "Daten vom Speicher synchronisieren", + "Click on any book to read": "zum lesen Buch anklicken", + "Move your mouse on the top edge of the reader": "Bewegen Sie die Maus auf den oberen Rand des Lesegeräts", + "Download failed,network problem or no backup": "Download fehlgeschlagen, Netzwerkproblem oder keine Sicherung", + "Choose your action to this book": "Wählen Sie Ihre Aktion zu diesem Buch", + "Edit": "Bearbeiten", + "Add": "Hinzufügen", + "Survey": "überwachen", + "What's new about this version": "Was ist neu in dieser Version", + "Our Website": "Unsere Website", + "What's New": "Was ist neu", + "What's been fixed": "Was wurde gefixed", + "Target": "Ziel", + "Select All": "Alles auswählen", + "Excute Successfully": "Ausführung erfolgreich", + "Disable screen blanking": "Bildschirmausblendung deaktivieren", + "When Koodo is running, your computer won't enter sleep mode": "Wenn Kodoo läuft, geht Ihr Computer nicht in den Ruhezustand", + "Prevent accidental trigger": "Unbeabsichtigtes Auslösen verhindern", + "Import books as link": "Bücher als link importieren", + "Close main window while reading": "Hauptfenster während des Lesens schließen", + "Merge reader into Word": "Reader in Word einbinden", + "Get rid of window frame, make reader hide into Word or any text editor, and can't be detected. You need to set up the reader's position, size and style first.": "Entfernen Sie den Fensterrahmen, so dass der Reader in Word oder einem anderen Texteditor versteckt und nicht erkannt werden kann. Sie müssen zuerst die Position, die Größe und den Stil des Readers einstellen.", + "The imported books will not be copied to library, only linked to the original book path": "Die importierten Bücher werden nicht in die Bibliothek kopiert, sondern nur zum originalen Buchpfad verlinkt.", + "Reader menu will not be triggered by hovering but clicking on the area": "Das Reader-Menü wird nicht durch Berühren, sondern durch Klicken auf den Bereich ausgelöst", + "Gesture and UI optimization for touch screen": "Gesten- und UI-Optimierung für Touchscreens", + "The book that you read from last time will be open automatically when launching": "Das Buch, das Sie beim letzten Mal gelesen haben, wird beim Starten automatisch geöffnet", + "All the folded content will be expanded in the navigation panel": "Der gesamte eingeklappte Inhalt wird im Navigationsbereich erweitert", + "Reader window will be maximized to fit the screen when opening a book": "Lesefenster wird beim Öffnen eines Buches an Bildschirmgröße angepasst", + "Open books in the main window": "Öffne Bücher im Hauptfenster", + "Book won't be opened in a seperate window but directly opened in the main window": "Das Buch wird nicht in einem separaten Fenster geöffnet, sondern direkt im Hauptfenster", + "Book not exsits": "Buch existiert nicht", + "Reach frequency limit": "Erreichen der Frequenzgrenze", + "Error happens": "Fehler passieren", + "Text Indent": "Texteinrückung", + "Deselect All": "Alle abwählen", + "Authorize": "Autorisieren", + "Open book without adding it to library": "Öffne Buch ohne es zur Bibliothek hinzuzufügen", + "When opening books in the file manager with Koodo, the opened books won't be added to the library": "Beim Öffnen von Büchern im Dateimanager mit Koodo werden die geöffneten Bücher nicht zur Bibliothek hinzugefügt", + "Hide menu button": "Menü-Button verstecken", + "Manage": "Verwalten", + "Sliding Animation": "Gleitende Animation", + "Please turn off open books in the main window": "Bitte schalten Sie offene Bücher im Hauptfenster aus", + "This action will delete all the notes, bookmarks and digests of this book": "Diese Aktion entfernt alle Notizen, Lesezeichen und Auszüge dieses Buches.", + "More formats supported": "Mehr Formate unterstützt", + "Koodo Reader's web version are limited by the browser, for more powerful features, please download the desktop version.": "Koodo Reader's Internetversion ist limitiert durch den Browser. Für mehr features, laden Sie bitte die Desktop-Version herunter.", + "Chinese Conversion": "Chinesische Konvertierung", + "Use first page as PDF cover": "Erste Seite als PDF-Deckblatt verwenden", + "You may see this error when the book you're importing is not supported by Koodo Reader, try converting it with Calibre": "Dieser Fehler kann auftreten, wenn das Buch, das Sie importieren, nicht von Koodo Reader unterstützt wird. Versuchen Sie es mit Calibre zu konvertieren", + "Shelf title can't be pure number": "Der Regaltitel kann keine bloße Zahl sein", + "Open Console": "Konsole öffnen", + "Appearance": "Erscheinungsbild", + "Light Mode": "Licht-Modus", + "Night Mode": "Nacht-Modus", + "Follow OS": "Modus nach OS", + "Open url with built-in browser": "Url mit eingebautem Browser öffnen" +} diff --git a/src/assets/locales/en/translation.json b/src/assets/locales/en/translation.json index 0344629d..2e784c76 100644 --- a/src/assets/locales/en/translation.json +++ b/src/assets/locales/en/translation.json @@ -243,7 +243,7 @@ "Tips": "Tips", "Brightness": "Brightness", "How sync works": "How sync works", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "You need to change the storage location to the same cloud drive folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download your data from this folder and keep data synchronized across all you computers. Visit our document for more instructions.", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Sync function works with third-party cloud drive. You need to change the storage location to the same cloud drive folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download your data from this folder and keep data synchronized across all you computers. Visit our document for more instructions.", "Line Height": "Line Height", "Please turn off open books in the main window first": "Please turn off open books in the main window first", "Please turn off merge with word first": "Please turn off merge with word first", diff --git a/src/assets/locales/es/translation.json b/src/assets/locales/es/translation.json index 8ca4a465..02744cd5 100644 --- a/src/assets/locales/es/translation.json +++ b/src/assets/locales/es/translation.json @@ -232,7 +232,7 @@ "Tips": "Tips", "Brightness": "Brillo", "How sync works": "Cómo funciona la Sincronización", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Necesita cambiar la ubicación de almacenamiento a la misma capeta de la nube en los diferentes dispositivos. Cuando de click en el botón de sincronización, Koodo Reader automáticamente subirá y descargará los datos de ésta carpeta y mantendrá sincronizados los datos a través de sus dispositivos. Visite nuestro Documento para más instrucciones.", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Necesita cambiar la ubicación de almacenamiento a la misma capeta de la nube en los diferentes dispositivos. Cuando de click en el botón de sincronización, Koodo Reader automáticamente subirá y descargará los datos de ésta carpeta y mantendrá sincronizados los datos a través de sus dispositivos. Visite nuestro Documento para más instrucciones.", "Line Height": "Tamaño de Línea", "Please turn off open books in the main window first": "Por favor cierre los libros abiertos de la ventana principal", "Please turn off merge with word first": "Por favor desactive Juntar con Word", diff --git a/src/assets/locales/fa/translation.json b/src/assets/locales/fa/translation.json index 2def7afb..c7a72f9d 100644 --- a/src/assets/locales/fa/translation.json +++ b/src/assets/locales/fa/translation.json @@ -235,7 +235,7 @@ "Tips": "راهنما ها", "Brightness": "روشنایی", "How sync works": "همگام سازی جطور کار میکند", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "باید محل ذخیره سازی را به همان پوشه درایو ابری در رایانه های مختلف تغییر دهید. وقتی روی دکمه همگام‌سازی کلیک می‌کنید، کودو ریدر به‌طور خودکار داده‌های شما را از این پوشه آپلود یا دانلود می‌کند و داده‌ها را در همه رایانه‌های شما همگام‌سازی می‌کند. برای دستورالعمل های بیشتر از سند ما دیدن کنید.", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "باید محل ذخیره سازی را به همان پوشه درایو ابری در رایانه های مختلف تغییر دهید. وقتی روی دکمه همگام‌سازی کلیک می‌کنید، کودو ریدر به‌طور خودکار داده‌های شما را از این پوشه آپلود یا دانلود می‌کند و داده‌ها را در همه رایانه‌های شما همگام‌سازی می‌کند. برای دستورالعمل های بیشتر از سند ما دیدن کنید.", "Line Height": "ارتفاع خط", "Please turn off open books in the main window first": "لطفاً ابتدا کتابهای باز را در پنجره اصلی خاموش کنید", "Please turn off merge with word first": "لطفاً ابتدا ادغام با کلمه را خاموش کنید", diff --git a/src/assets/locales/fr/translation.json b/src/assets/locales/fr/translation.json index ef377654..12c9eb43 100644 --- a/src/assets/locales/fr/translation.json +++ b/src/assets/locales/fr/translation.json @@ -232,7 +232,7 @@ "Tips": "Astuce", "Brightness": "Luminosité", "How sync works": "Comment fonctionne la synchronisation", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Vous devez modifier l'emplacement du dossier de stockage sur votre ordinateur pour le même dossier de stockage en ligne sur vos différents appareils. Lorsque vous cliquez sur le bouton de synchronisation, Koodo Reader chargera ou téléchargera automatiquement vos données depuis ce dossier et maintiendra la synchronisation des données sur tous vos ordinateurs. Visitez notre document pour plus d'instructions.", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Vous devez modifier l'emplacement du dossier de stockage sur votre ordinateur pour le même dossier de stockage en ligne sur vos différents appareils. Lorsque vous cliquez sur le bouton de synchronisation, Koodo Reader chargera ou téléchargera automatiquement vos données depuis ce dossier et maintiendra la synchronisation des données sur tous vos ordinateurs. Visitez notre document pour plus d'instructions.", "Line Height": "Hauteur de ligne", "Please turn off open books in the main window first": "Veuillez d'abord fermer les livres ouverts dans la fenêtre principale.", "Please turn off merge with word first": "Veuillez d'abord désactiver la fusion avec Word", diff --git a/src/assets/locales/jp/translation.json b/src/assets/locales/jp/translation.json index 21240c02..f83e9aaa 100644 --- a/src/assets/locales/jp/translation.json +++ b/src/assets/locales/jp/translation.json @@ -1,342 +1,342 @@ { - "Books": "全本", - "Recent": "最近", - "Bookmarks": "ブックマーク", - "Favorites": "好きな", - "Notes": "メモ", - "Highlights": "ハイライト", - "Shelf": "ラック", - "Left": "左", - "Justify": "合法性", - "Right": "右", - "Text Align": "テキスト整列", - "Sync Successfully": "同期成功", - "Permanently Delete": "永続的な削除", - "Default search engine": "デフォルトの検索エンジン", - "Built-in font": "標準フォント", - "Cover": "カバー枚", - "Bold": "フォントの太さ", - "Sort by": "ツールバーの", - "Italic": "斜体", - "Text underline": "下線", - "Text shadow": "テキストシャドウ", - "Import Failed": "図書のインポートに失敗しました", - "New Version Available": "新しいバージョンの検出", - "New Version": "新しいバージョンのダウンロード", - "Customize": "ツールバーの", - "Auto open book in fullscreen": "図書ウィンドウの自動最大化", - "System Font": "システムフォント", - "Access token expired, refetching token": "資格証明の失効、再取得中", - "Access token received, please continue": "証明書の取得に成功しました。前の操作を続行してください。", - "Changelog": "更新ログ", - "Update Complete": "更新成功", - "Fetching acess token failed": "資格証明の取得に失敗しました", - "Authorizing, please wait": "承認中、しばらくお待ちください", - "Downloading, please wait": "ダウンロード中、しばらくお待ちください", - "Uploading, please wait": "アップロード中、しばらくお待ちください", - "Import": "図書を導入する", - "Backup": "バックアップ", - "Search my library": "私のライブラリを検索", - "Search my notes": "私のメモを検索", - "Search my highlights": "私のハイライトを検索", - "Card": "カードモード", - "List": "リストモード", - "Work": "仕事の勉強", - "Entertainment": "レクリエーション", - "Study": "生活百科事典", - "Author": "作成者", - "Duplicate Shelf": "本棚の繰り返し", - "Reading Time": "既読", - "Content": "目次", - "Voice": "音色", - "Speed": "早口で話す", - "Bookmark": "ブックマーク", - "Single-Page Mode": "シングルページモード", - "Double-Page Mode": "ダブルページモード", - "Background Color": "背景色", - "Font Size": "フォントサイズ", - "Font Family": "フォント", - "Default": "デフォルト", - "Small": "小さい", - "Medium": "中", - "Large": "大きい", - "Cancel Successfully": "キャンセル成功", - "Only supported by desktop version": "クライアントバージョンのみのサポート", - "Hide mimical background": "シミュレーションの背景を使用しないでください", - "Auto hide cursor when reading": "読み取り時にマウスを自動的に非表示にする", - "Disable update notification": "更新アラートを閉じる", - "Roadmap": "開発計画", - "Paragraph Spacing": "段落間隔", - "Unlock": "ロック解除", - "Lock": "ロック", - "Reading Option": "読み取りオプション", - "Progress": "現在の進行状況", - "Exit": "終了", - "Language": "言語の選択", - "Enter Fullscreen": "フルスクリーン", - "Exit Fullscreen": "フルスクリーンを終了", - "Add Bookmark": "ブックマークの追加", - "Add to Shelf": "本棚に追加", - "New Shelf": "新規作成", - "New": "新しい本棚", - "Cancel": "キャンセル", - "Confirm": "確認", - "Delete": "削除", - "Delete This Book": "この本を削除", - "Edit Book": "図書を編集する", - "Edit Successfully": "編集に成功しました", - "Book Name": "タイトル", - "Sort by Date": "を押して時間を追加", - "Descend": "降順", - "Ascend": "昇順", - "Sort by Name": "書名どおり", - "Token": "証憑", - "Book not exist": "書籍は存在しません", - "Please authorize your account, and fill the following box with the token": "ログイン権限が付与されると、一連のコードが取得されます。次の入力ボックスにコードを入力するとバインドが完了します。", - "Copy Link": "リンクのコピー", - "Copy Token": "証明書のコピー", - "Copied": "コピー済み", - "Chinese Coversion": "複雑な変換", - "Simplified To Traditional": "簡体字から繁体字へ", - "Traditional To Simplified": "繁体字簡体字変換", - "Shelf Title is Empty": "本棚名が空です", - "Copy Link Successfully": "リンクコピー成功", - "Add Successfully": "追加成功", - "Select": "選択", - "Coming Soon": "お楽しみに", - "Understand": "理解する", - "Authorize Successfully": "首尾よく認可する", - "Authorize Failed": "承認失敗", - "Choose your operation": "操作の選択", - "Where is your data?": "データソースの選択", - "Where to keep your data?": "データ格納場所の選択", - "I want to backup": "バックアップ", - "I want to restore": "リカバリ", - "Delete this shelf": "この本棚を削除", - "This action will clear and remove this shelf": "この操作により、本棚が空になり、削除されます。", - "Delete this tag": "このラベルを削除", - "This action will clear and remove this tag": "この操作により、このラベルが空になり、削除されます。", - "Backup Successfully": "バックアップ成功", - "Restore Successfully": "リカバリ成功", - "Try refresh or restart": "ソフトウェアの再起動後に有効", - "Search the book": "全書検索", - "Theme Color": "テーマ色を選択", - "Turn on text-to-speech": "テキスト読み上げをオンにします", - "Scroll Mode": "スクロールモード", - "Loading": "読み込み", - "Note": "メモ", - "Page Width": "ページ幅", - "Digest": "ダイジェスト", - "Auto expand content": "コンテンツの自動展開", - "Hide footer": "フッターを表示しない", - "Hide header": "ヘッダーを表示しない", - "Book size is over 20M": "ブックサイズは20M以上", - "Current Font Size": "現在のサイズ", - "Current Chapter": "現在の章", - "Turn off text-to-speech": "タッチスクリーンモードをオフにする", - "Warning": "友情のヒント", - "All Tags": "すべてのラベル", - "Turn On Successfully": "オープン成功", - "Turn Off Successfully": "シャットダウン成功", - "Turn off touch screen mode": "タッチスクリーンモードをオフにする", - "Use built-in font": "デフォルトフォントの使用", - "Setting": "設定", - "Turn on touch screen mode": "タッチパネルモードをオンにする", - "Auto open last-read book": "最後に読んだ本を自動的に開く", - "About Project": "オープンソースアドレス", - "Developer": "開発者について", - "Please import less than 10 books": "一度に最大10冊の本をインポートしてください", - "Please delete some books before import": "ライブラリが大きすぎます。最初にいくつかの本を削除してください", - "For better user experince, please visit this site on a computer": "Koodo Readerはデスクトップ向けに設計されており、モバイル端末には適していません。パソコンでこのサイトを開いてください。", - "Wrong bookmark": "ブックマークに問題が発生しました", - "Last Step": "前へ", - "Next Step": "次のステップ", - "Go To": "クリックして", - "It seems like you're lost": "あなたが迷っているようです", - "Return to home": "トップページに戻る", - "Only desktop support this format": "クライアントバージョンのみmobiおよびtxtフォーマットをサポート", - "Only desktop support this service": "クライアントのみがバックアップをサポート", - "Delete from Shelf": "本棚から本を削除する", - "Delete Successfully": "削除に成功しました", - "This action will move this book and its the notes, bookmarks and highlights of this book to the recycle bin": "図書および図書のブックマーク、メモ、ハイライトをリサイクルステーションに移動", - "This action won't delete the original book": "この本棚から本を削除するだけで、元の本は影響を受けません。", - "From": "から", - "Duplicate Book": "図書の重複", - "Unknown Chapter": "不明な章", - "Unknown Authur": "不明な作者", - "Minute": "分", - "Empty": "空", - "Next Chapter": "前の章", - "Prev Chapter": "次の章", - "Less": "ひきあげる", - "Current Reading Time": "読書時間:{{count}}分", - "Finish Reading Time": "この章を読むために必要なもの:{{count}}分", - "Book Page": "ページ{{count}}", - "Total books": "合計{{count}}冊", - "Pages": "この章のページ数", - "Chapters": "章の数", - "Translate": "翻訳", - "Continuous": "連続スクロール", - "Scroll": "章のスクロール", - "Show in the book": "ハイライトを表示", - "More Notes": "ノートの出典を表示", - "Pick Color": "色を選択", - "Highlight Successfully": "成功を強調する", - "Take Note": "メモを取る", - "Highlight": "ハイライト", - "Copy Successfully": "コピー成功", - "Copy ": "コピー", - "Text Color": "テキストの色", - "Export": "エクスポート", - "Restore": "リカバリ", - "Publisher": "出版社", - "Added at": "に追加", - "Margin": "マージン", - "Do you want to open this link in browser": "ブラウザを使用してこのリンクを開くかどうか", - "Webdav Info": "Webdavは、ナッツクラウドが提供するWebdavサービスを推奨するシンプルで効率的なデータバックアップ方式です。", - "Please Wait a moment": "しばらくお待ちください", - "Server Address": "サーバアドレス", - "Username": "ユーザー名", - "Password": "パスワード", - "Description": "説明", - "Sort by Recent": "直近で読む", - "Collapse sidebar": "サイドバーを閉じる", - "Show sidebar": "サイドバーを開く", - "Sync": "同期", - "Help": "ヘルプドキュメント", - "Feedback": "フィードバック", - "Github Repo": "Githubリポジトリ", - "Speak the text": "テキストを声に出して読む", - "Search on the internet": "オンライン検索", - "Search in the book": "書籍全体の検索", - "Change storage location": "保管場所を変更する", - "Change location": "地域を変更", - "Change Successfully": "変更に成功しました", - "Too many images": "画像が多すぎる本は、解析速度に深刻な影響を与える可能性があります", - "Export Successfully": "エクスポート成功", - "Change Failed": "変更に失敗しました", - "You successfully update to": "正常に更新", - "Deleted Books": "削除本", - "Delete All Books": "全て削除", - "Sort by Duration": "期間で並べ替え", - "Sort by Author": "著者で並べ替え", - "Audio is not ready yet": "本を分析して、後でもう一度やり直してください", - "Drop your books here": "ここに本をドラッグアンドドロップします", - "Sort by Percentage": "進捗状況を読むことによって", - "This action will remove all the books in recycle bin,together with their notes, bookmarks and digests": "この操作では、ごみ箱のすべての図書とブックマーク、メモ、ハイライトが完全に削除されます", - "Batch import only support epub or pdf files": "バッチインポートのみepubまたはpdfフォーマットをサポート", - "The deleted books will show up here": "削除された図書がここに現れ、回収所を空けてから完全に削除されます", - "Empty Recycle Bin": "ごみ箱が空です", - "Skip": "スキップ", - "Local": "ローカル", - "Tips": "ヒント", - "Brightness": "スクリーン輝度", - "How sync works": "同期はどのように実現されますか?", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "同期機能はサードパーティの同期ディスクに合わせて実現し、異なるコンピュータでデータ格納場所を同じディスクフォルダに変更する必要があります。いずれかのパソコンで同期をクリックすると、Koodoのデータがこのフォルダに更新されます。ディスク同期後、別のパソコンでKoodoを開き、同期ボタンをクリックすると、データがKoodoに同期します。操作方法については、ヘルプドキュメントを参照してください。", - "Line Height": "行間隔", - "Please turn off open books in the main window first": "閉じて直接メインウィンドウで図書を開けてください", - "Please turn off merge with word first": "最初に言葉でマージをオフにしてください", - "Please choose an empty folder": "空のフォルダを選択してください", - "Data change detected, whether to update?": "データの変化を検出し、更新するかどうか", - "Empty Library": "図書庫が空です", - "Download": "ダウンロード", - "Use the fonts from your local computer": "パソコンのフォント設定をサポート", - "Backup your data with Webdav": "Webdavバックアップ方式のサポート", - "Click the import button to add books": "右上のローカルからの読み込みボタンをクリックして図書を追加してください", - "Turn on night mode": "ナイトモードをオンにする", - "Turn on auto update": "自動更新をオンにする", - "Auto Update relys on Github Release for package hosting, if your internet doesn't have stable connection to Github, we highly recommand you to turn off this option": "自動更新機能はGithubに依存しています。ローカルネットワークがGithubに安定してアクセスできない場合は、この機能を有効にすることはお勧めしません。有効にすると、更新リマインダーが個別に提供されなくなります。", - "File size": "ファイルサイズ", - "Take effect at next startup": "次回図書を開いて発効する", - "View Mode": "ビューモード", - "Download Desktop Version": "ダウンロードデスクトップ版", - "No Favorite Books": "お気に入りの図書は空です", - "Move your mouse on the top of any book, click the heart icon to add it to your favorite books": "マウスを任意の本の上に移動し、ハートアイコンをクリックして好きな本に図書を追加します。", - "Empty Reading Records": "読み取りレコードが空です", - "Empty Bookmark": "ブックマークが空です", - "Empty Note": "あなたのノートは空です", - "Select any text and click the Note button on the popup menu": "リーダーインタフェースでテキストを選択した後、ポップアップダイアログボックスにメモを追加します。", - "Empty Highlight": "ハイライトを空にする", - "Select any text and click the Highlight button on the popup menu": "リーダーインタフェースでテキストを選択した後、ポップアップダイアログボックスでハイライトをクリックします。", - "Invert color": "色の反転", - "Empty Shelf": "本棚は空いています", - "Move your mouse on top of any book, then click the more icon to add the book to the shelf": "マウスを任意の本の上に移動し、右上のアイコンをクリックして本棚に図書を追加します。", - "Download failed, network problem or no backup": "ダウンロード失敗、ネットワークエラー、またはバックアップが見つかりませんでした", - "Upload failed, check your connection": "アップロードに失敗しました。ネットワーク接続を確認してください。", - "Version": "ソフトウェアバージョン", - "Not supported yet": "まだサポートされていない", - "Update to": "更新先", - "Date": "更新日:", - "Blue": "青", - "Red": "赤", - "Green": "緑", - "Purple": "紫", - "Unauthorize": "権限解除", - "Remember window's size": "メモリリーダウィンドウサイズ", - "Letter Spacing": "ワードピッチ", - "Unauthorize Successfully": "権限解除成功", - "Download Demo Book": "デモブックをダウンロード", - "Extra Large": "エクストララージ", - "Ultra Large": "超大型", - "Disable analytics service": "統計を閉じる", - "Hide navigation button": "ページをめくるボタンを表示しない", - "More": "ノートの出典を表示", - "Collect": "抜粋する", - "Copy": "コピー", - "Hi! Stranger": "こんにちは!友達", - "Sync data from storage": "格納場所からのデータの同期", - "Click on any book to read": "いずれかの本をクリックして読み始めます", - "Move your mouse on the top edge of the reader": "リーダーインタフェースでマウスを上端に移動し、ポップアップメニューバーにブックマークを追加", - "Download failed,network problem or no backup": "ダウンロード失敗、ネットワークエラー、またはバックアップが見つかりませんでした", - "Choose your action to this book": "本書に対する操作を選択する", - "Edit": "編集", - "Add": "追加", - "Survey": "調査", - "What's new about this version": "今回の更新には何が含まれていますか?", - "Our Website": "公式ホームページ", - "What's New": "新しい機能", - "What's been fixed": "問題の修正", - "Target": "ターゲット言語", - "Select All": "全て選択", - "Excute Successfully": "実行成功", - "Disable screen blanking": "コンピュータがスリープモードに入るのを阻止する", - "When Koodo is running, your computer won't enter sleep mode": "Koodoの実行時、コンピュータはスリープモードに入らない", - "Prevent accidental trigger": "誤接触防止モードをオンにする", - "Import books as link": "図書を引用的に導入する", - "Close main window while reading": "図書を開くと自動的にメインウィンドウが閉じます", - "Merge reader into Word": "リーダーをマージする", - "Get rid of window frame, make reader hide into Word or any text editor, and can't be detected. You need to set up the reader's position, size and style first.": "図書を開く時直接原始の経路で図書を開けて、図書を再び図書庫の中でリーダーの枠を隠すことができなくて、Wordに混入させて、発見することができなくて、早めにウィンドウの大きさ、位置と様式を設置する必要があります", - "The imported books will not be copied to library, only linked to the original book path": "図書を開くときは元の経路で直接図書を開き、図書を図書庫にコピーしません", - "Reader menu will not be triggered by hovering but clicking on the area": "リーダーメニューは、特定の領域に入るとトリガーされるのではなく、関連する領域をクリックしてトリガーする必要があります", - "Gesture and UI optimization for touch screen": "タッチスクリーンに対するUIとジェスチャー操作の最適化", - "The book that you read from last time will be open automatically when launching": "ソフトウェアが起動すると、前回読んだ図書が自動的に開きます", - "All the folded content will be expanded in the navigation panel": "図書のマルチレベルディレクトリを自動的に展開する", - "Reader window will be maximized to fit the screen when opening a book": "図書を開くと、ウィンドウが自動的に最大化されます", - "Open books in the main window": "メインウィンドウで直接図書を開く", - "Book won't be opened in a seperate window but directly opened in the main window": "図書は別々のウィンドウで開くのではなく、メインウィンドウで直接開く", - "Book not exsits": "図書ファイルは存在しません", - "Reach frequency limit": "要求の頻度が速すぎる", - "Error happens": "エラー発生", - "Text Indent": "最初の行のインデント", - "Deselect All": "すべて選択しない", - "Authorize": "権限", - "Open book without adding it to library": "ライブラリに追加せずに図書を開く", - "When opening books in the file manager with Koodo, the opened books won't be added to the library": "Koodoを使用してフォルダ内の図書を開くと、図書はライブラリに追加されません", - "Hide menu button": "メニューボタンを表示しない", - "Manage": "管理する", - "Sliding Animation": "ページをめくるアニメーション", - "Please turn off open books in the main window": "メインウィンドウで直接図書を開くオプションを閉じてください", - "This action will delete all the notes, bookmarks and digests of this book": "この操作により、本書のすべてのノート、ハイライト、ブックマークが削除されます", - "More formats supported": "その他のフォーマットをサポート", - "Koodo Reader's web version are limited by the browser, for more powerful features, please download the desktop version.": "Koodo ReaderのWebページ版はブラウザの制限を受けています。デスクトップ版をダウンロードして完全な機能を体験してください", - "Chinese Conversion": "従来の簡体字変換", - "Use first page as PDF cover": "PDFトップページを表紙として使用", - "You may see this error when the book you're importing is not supported by Koodo Reader, try converting it with Calibre": "この図書はしばらくサポートされていません、Calibre変換を使用して再インポートしてください", - "Shelf title can't be pure number": "本棚名は純数字ではいけません", - "Open Console": "コンソールを開く", - "Appearance": "外観", - "Light Mode": "デイモード", - "Night Mode": "ナイトモード", - "Follow OS": "フォローシステム", - "Open url with built-in browser": "組み込みブラウザを使用してリンクを開く" -} \ No newline at end of file + "Books": "全本", + "Recent": "最近", + "Bookmarks": "ブックマーク", + "Favorites": "好きな", + "Notes": "メモ", + "Highlights": "ハイライト", + "Shelf": "ラック", + "Left": "左", + "Justify": "合法性", + "Right": "右", + "Text Align": "テキスト整列", + "Sync Successfully": "同期成功", + "Permanently Delete": "永続的な削除", + "Default search engine": "デフォルトの検索エンジン", + "Built-in font": "標準フォント", + "Cover": "カバー枚", + "Bold": "フォントの太さ", + "Sort by": "ツールバーの", + "Italic": "斜体", + "Text underline": "下線", + "Text shadow": "テキストシャドウ", + "Import Failed": "図書のインポートに失敗しました", + "New Version Available": "新しいバージョンの検出", + "New Version": "新しいバージョンのダウンロード", + "Customize": "ツールバーの", + "Auto open book in fullscreen": "図書ウィンドウの自動最大化", + "System Font": "システムフォント", + "Access token expired, refetching token": "資格証明の失効、再取得中", + "Access token received, please continue": "証明書の取得に成功しました。前の操作を続行してください。", + "Changelog": "更新ログ", + "Update Complete": "更新成功", + "Fetching acess token failed": "資格証明の取得に失敗しました", + "Authorizing, please wait": "承認中、しばらくお待ちください", + "Downloading, please wait": "ダウンロード中、しばらくお待ちください", + "Uploading, please wait": "アップロード中、しばらくお待ちください", + "Import": "図書を導入する", + "Backup": "バックアップ", + "Search my library": "私のライブラリを検索", + "Search my notes": "私のメモを検索", + "Search my highlights": "私のハイライトを検索", + "Card": "カードモード", + "List": "リストモード", + "Work": "仕事の勉強", + "Entertainment": "レクリエーション", + "Study": "生活百科事典", + "Author": "作成者", + "Duplicate Shelf": "本棚の繰り返し", + "Reading Time": "既読", + "Content": "目次", + "Voice": "音色", + "Speed": "早口で話す", + "Bookmark": "ブックマーク", + "Single-Page Mode": "シングルページモード", + "Double-Page Mode": "ダブルページモード", + "Background Color": "背景色", + "Font Size": "フォントサイズ", + "Font Family": "フォント", + "Default": "デフォルト", + "Small": "小さい", + "Medium": "中", + "Large": "大きい", + "Cancel Successfully": "キャンセル成功", + "Only supported by desktop version": "クライアントバージョンのみのサポート", + "Hide mimical background": "シミュレーションの背景を使用しないでください", + "Auto hide cursor when reading": "読み取り時にマウスを自動的に非表示にする", + "Disable update notification": "更新アラートを閉じる", + "Roadmap": "開発計画", + "Paragraph Spacing": "段落間隔", + "Unlock": "ロック解除", + "Lock": "ロック", + "Reading Option": "読み取りオプション", + "Progress": "現在の進行状況", + "Exit": "終了", + "Language": "言語の選択", + "Enter Fullscreen": "フルスクリーン", + "Exit Fullscreen": "フルスクリーンを終了", + "Add Bookmark": "ブックマークの追加", + "Add to Shelf": "本棚に追加", + "New Shelf": "新規作成", + "New": "新しい本棚", + "Cancel": "キャンセル", + "Confirm": "確認", + "Delete": "削除", + "Delete This Book": "この本を削除", + "Edit Book": "図書を編集する", + "Edit Successfully": "編集に成功しました", + "Book Name": "タイトル", + "Sort by Date": "を押して時間を追加", + "Descend": "降順", + "Ascend": "昇順", + "Sort by Name": "書名どおり", + "Token": "証憑", + "Book not exist": "書籍は存在しません", + "Please authorize your account, and fill the following box with the token": "ログイン権限が付与されると、一連のコードが取得されます。次の入力ボックスにコードを入力するとバインドが完了します。", + "Copy Link": "リンクのコピー", + "Copy Token": "証明書のコピー", + "Copied": "コピー済み", + "Chinese Coversion": "複雑な変換", + "Simplified To Traditional": "簡体字から繁体字へ", + "Traditional To Simplified": "繁体字簡体字変換", + "Shelf Title is Empty": "本棚名が空です", + "Copy Link Successfully": "リンクコピー成功", + "Add Successfully": "追加成功", + "Select": "選択", + "Coming Soon": "お楽しみに", + "Understand": "理解する", + "Authorize Successfully": "首尾よく認可する", + "Authorize Failed": "承認失敗", + "Choose your operation": "操作の選択", + "Where is your data?": "データソースの選択", + "Where to keep your data?": "データ格納場所の選択", + "I want to backup": "バックアップ", + "I want to restore": "リカバリ", + "Delete this shelf": "この本棚を削除", + "This action will clear and remove this shelf": "この操作により、本棚が空になり、削除されます。", + "Delete this tag": "このラベルを削除", + "This action will clear and remove this tag": "この操作により、このラベルが空になり、削除されます。", + "Backup Successfully": "バックアップ成功", + "Restore Successfully": "リカバリ成功", + "Try refresh or restart": "ソフトウェアの再起動後に有効", + "Search the book": "全書検索", + "Theme Color": "テーマ色を選択", + "Turn on text-to-speech": "テキスト読み上げをオンにします", + "Scroll Mode": "スクロールモード", + "Loading": "読み込み", + "Note": "メモ", + "Page Width": "ページ幅", + "Digest": "ダイジェスト", + "Auto expand content": "コンテンツの自動展開", + "Hide footer": "フッターを表示しない", + "Hide header": "ヘッダーを表示しない", + "Book size is over 20M": "ブックサイズは20M以上", + "Current Font Size": "現在のサイズ", + "Current Chapter": "現在の章", + "Turn off text-to-speech": "タッチスクリーンモードをオフにする", + "Warning": "友情のヒント", + "All Tags": "すべてのラベル", + "Turn On Successfully": "オープン成功", + "Turn Off Successfully": "シャットダウン成功", + "Turn off touch screen mode": "タッチスクリーンモードをオフにする", + "Use built-in font": "デフォルトフォントの使用", + "Setting": "設定", + "Turn on touch screen mode": "タッチパネルモードをオンにする", + "Auto open last-read book": "最後に読んだ本を自動的に開く", + "About Project": "オープンソースアドレス", + "Developer": "開発者について", + "Please import less than 10 books": "一度に最大10冊の本をインポートしてください", + "Please delete some books before import": "ライブラリが大きすぎます。最初にいくつかの本を削除してください", + "For better user experince, please visit this site on a computer": "Koodo Readerはデスクトップ向けに設計されており、モバイル端末には適していません。パソコンでこのサイトを開いてください。", + "Wrong bookmark": "ブックマークに問題が発生しました", + "Last Step": "前へ", + "Next Step": "次のステップ", + "Go To": "クリックして", + "It seems like you're lost": "あなたが迷っているようです", + "Return to home": "トップページに戻る", + "Only desktop support this format": "クライアントバージョンのみmobiおよびtxtフォーマットをサポート", + "Only desktop support this service": "クライアントのみがバックアップをサポート", + "Delete from Shelf": "本棚から本を削除する", + "Delete Successfully": "削除に成功しました", + "This action will move this book and its the notes, bookmarks and highlights of this book to the recycle bin": "図書および図書のブックマーク、メモ、ハイライトをリサイクルステーションに移動", + "This action won't delete the original book": "この本棚から本を削除するだけで、元の本は影響を受けません。", + "From": "から", + "Duplicate Book": "図書の重複", + "Unknown Chapter": "不明な章", + "Unknown Authur": "不明な作者", + "Minute": "分", + "Empty": "空", + "Next Chapter": "前の章", + "Prev Chapter": "次の章", + "Less": "ひきあげる", + "Current Reading Time": "読書時間:{{count}}分", + "Finish Reading Time": "この章を読むために必要なもの:{{count}}分", + "Book Page": "ページ{{count}}", + "Total books": "合計{{count}}冊", + "Pages": "この章のページ数", + "Chapters": "章の数", + "Translate": "翻訳", + "Continuous": "連続スクロール", + "Scroll": "章のスクロール", + "Show in the book": "ハイライトを表示", + "More Notes": "ノートの出典を表示", + "Pick Color": "色を選択", + "Highlight Successfully": "成功を強調する", + "Take Note": "メモを取る", + "Highlight": "ハイライト", + "Copy Successfully": "コピー成功", + "Copy ": "コピー", + "Text Color": "テキストの色", + "Export": "エクスポート", + "Restore": "リカバリ", + "Publisher": "出版社", + "Added at": "に追加", + "Margin": "マージン", + "Do you want to open this link in browser": "ブラウザを使用してこのリンクを開くかどうか", + "Webdav Info": "Webdavは、ナッツクラウドが提供するWebdavサービスを推奨するシンプルで効率的なデータバックアップ方式です。", + "Please Wait a moment": "しばらくお待ちください", + "Server Address": "サーバアドレス", + "Username": "ユーザー名", + "Password": "パスワード", + "Description": "説明", + "Sort by Recent": "直近で読む", + "Collapse sidebar": "サイドバーを閉じる", + "Show sidebar": "サイドバーを開く", + "Sync": "同期", + "Help": "ヘルプドキュメント", + "Feedback": "フィードバック", + "Github Repo": "Githubリポジトリ", + "Speak the text": "テキストを声に出して読む", + "Search on the internet": "オンライン検索", + "Search in the book": "書籍全体の検索", + "Change storage location": "保管場所を変更する", + "Change location": "地域を変更", + "Change Successfully": "変更に成功しました", + "Too many images": "画像が多すぎる本は、解析速度に深刻な影響を与える可能性があります", + "Export Successfully": "エクスポート成功", + "Change Failed": "変更に失敗しました", + "You successfully update to": "正常に更新", + "Deleted Books": "削除本", + "Delete All Books": "全て削除", + "Sort by Duration": "期間で並べ替え", + "Sort by Author": "著者で並べ替え", + "Audio is not ready yet": "本を分析して、後でもう一度やり直してください", + "Drop your books here": "ここに本をドラッグアンドドロップします", + "Sort by Percentage": "進捗状況を読むことによって", + "This action will remove all the books in recycle bin,together with their notes, bookmarks and digests": "この操作では、ごみ箱のすべての図書とブックマーク、メモ、ハイライトが完全に削除されます", + "Batch import only support epub or pdf files": "バッチインポートのみepubまたはpdfフォーマットをサポート", + "The deleted books will show up here": "削除された図書がここに現れ、回収所を空けてから完全に削除されます", + "Empty Recycle Bin": "ごみ箱が空です", + "Skip": "スキップ", + "Local": "ローカル", + "Tips": "ヒント", + "Brightness": "スクリーン輝度", + "How sync works": "同期はどのように実現されますか?", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "同期機能はサードパーティの同期ディスクに合わせて実現し、異なるコンピュータでデータ格納場所を同じディスクフォルダに変更する必要があります。いずれかのパソコンで同期をクリックすると、Koodoのデータがこのフォルダに更新されます。ディスク同期後、別のパソコンでKoodoを開き、同期ボタンをクリックすると、データがKoodoに同期します。操作方法については、ヘルプドキュメントを参照してください。", + "Line Height": "行間隔", + "Please turn off open books in the main window first": "閉じて直接メインウィンドウで図書を開けてください", + "Please turn off merge with word first": "最初に言葉でマージをオフにしてください", + "Please choose an empty folder": "空のフォルダを選択してください", + "Data change detected, whether to update?": "データの変化を検出し、更新するかどうか", + "Empty Library": "図書庫が空です", + "Download": "ダウンロード", + "Use the fonts from your local computer": "パソコンのフォント設定をサポート", + "Backup your data with Webdav": "Webdavバックアップ方式のサポート", + "Click the import button to add books": "右上のローカルからの読み込みボタンをクリックして図書を追加してください", + "Turn on night mode": "ナイトモードをオンにする", + "Turn on auto update": "自動更新をオンにする", + "Auto Update relys on Github Release for package hosting, if your internet doesn't have stable connection to Github, we highly recommand you to turn off this option": "自動更新機能はGithubに依存しています。ローカルネットワークがGithubに安定してアクセスできない場合は、この機能を有効にすることはお勧めしません。有効にすると、更新リマインダーが個別に提供されなくなります。", + "File size": "ファイルサイズ", + "Take effect at next startup": "次回図書を開いて発効する", + "View Mode": "ビューモード", + "Download Desktop Version": "ダウンロードデスクトップ版", + "No Favorite Books": "お気に入りの図書は空です", + "Move your mouse on the top of any book, click the heart icon to add it to your favorite books": "マウスを任意の本の上に移動し、ハートアイコンをクリックして好きな本に図書を追加します。", + "Empty Reading Records": "読み取りレコードが空です", + "Empty Bookmark": "ブックマークが空です", + "Empty Note": "あなたのノートは空です", + "Select any text and click the Note button on the popup menu": "リーダーインタフェースでテキストを選択した後、ポップアップダイアログボックスにメモを追加します。", + "Empty Highlight": "ハイライトを空にする", + "Select any text and click the Highlight button on the popup menu": "リーダーインタフェースでテキストを選択した後、ポップアップダイアログボックスでハイライトをクリックします。", + "Invert color": "色の反転", + "Empty Shelf": "本棚は空いています", + "Move your mouse on top of any book, then click the more icon to add the book to the shelf": "マウスを任意の本の上に移動し、右上のアイコンをクリックして本棚に図書を追加します。", + "Download failed, network problem or no backup": "ダウンロード失敗、ネットワークエラー、またはバックアップが見つかりませんでした", + "Upload failed, check your connection": "アップロードに失敗しました。ネットワーク接続を確認してください。", + "Version": "ソフトウェアバージョン", + "Not supported yet": "まだサポートされていない", + "Update to": "更新先", + "Date": "更新日:", + "Blue": "青", + "Red": "赤", + "Green": "緑", + "Purple": "紫", + "Unauthorize": "権限解除", + "Remember window's size": "メモリリーダウィンドウサイズ", + "Letter Spacing": "ワードピッチ", + "Unauthorize Successfully": "権限解除成功", + "Download Demo Book": "デモブックをダウンロード", + "Extra Large": "エクストララージ", + "Ultra Large": "超大型", + "Disable analytics service": "統計を閉じる", + "Hide navigation button": "ページをめくるボタンを表示しない", + "More": "ノートの出典を表示", + "Collect": "抜粋する", + "Copy": "コピー", + "Hi! Stranger": "こんにちは!友達", + "Sync data from storage": "格納場所からのデータの同期", + "Click on any book to read": "いずれかの本をクリックして読み始めます", + "Move your mouse on the top edge of the reader": "リーダーインタフェースでマウスを上端に移動し、ポップアップメニューバーにブックマークを追加", + "Download failed,network problem or no backup": "ダウンロード失敗、ネットワークエラー、またはバックアップが見つかりませんでした", + "Choose your action to this book": "本書に対する操作を選択する", + "Edit": "編集", + "Add": "追加", + "Survey": "調査", + "What's new about this version": "今回の更新には何が含まれていますか?", + "Our Website": "公式ホームページ", + "What's New": "新しい機能", + "What's been fixed": "問題の修正", + "Target": "ターゲット言語", + "Select All": "全て選択", + "Excute Successfully": "実行成功", + "Disable screen blanking": "コンピュータがスリープモードに入るのを阻止する", + "When Koodo is running, your computer won't enter sleep mode": "Koodoの実行時、コンピュータはスリープモードに入らない", + "Prevent accidental trigger": "誤接触防止モードをオンにする", + "Import books as link": "図書を引用的に導入する", + "Close main window while reading": "図書を開くと自動的にメインウィンドウが閉じます", + "Merge reader into Word": "リーダーをマージする", + "Get rid of window frame, make reader hide into Word or any text editor, and can't be detected. You need to set up the reader's position, size and style first.": "図書を開く時直接原始の経路で図書を開けて、図書を再び図書庫の中でリーダーの枠を隠すことができなくて、Wordに混入させて、発見することができなくて、早めにウィンドウの大きさ、位置と様式を設置する必要があります", + "The imported books will not be copied to library, only linked to the original book path": "図書を開くときは元の経路で直接図書を開き、図書を図書庫にコピーしません", + "Reader menu will not be triggered by hovering but clicking on the area": "リーダーメニューは、特定の領域に入るとトリガーされるのではなく、関連する領域をクリックしてトリガーする必要があります", + "Gesture and UI optimization for touch screen": "タッチスクリーンに対するUIとジェスチャー操作の最適化", + "The book that you read from last time will be open automatically when launching": "ソフトウェアが起動すると、前回読んだ図書が自動的に開きます", + "All the folded content will be expanded in the navigation panel": "図書のマルチレベルディレクトリを自動的に展開する", + "Reader window will be maximized to fit the screen when opening a book": "図書を開くと、ウィンドウが自動的に最大化されます", + "Open books in the main window": "メインウィンドウで直接図書を開く", + "Book won't be opened in a seperate window but directly opened in the main window": "図書は別々のウィンドウで開くのではなく、メインウィンドウで直接開く", + "Book not exsits": "図書ファイルは存在しません", + "Reach frequency limit": "要求の頻度が速すぎる", + "Error happens": "エラー発生", + "Text Indent": "最初の行のインデント", + "Deselect All": "すべて選択しない", + "Authorize": "権限", + "Open book without adding it to library": "ライブラリに追加せずに図書を開く", + "When opening books in the file manager with Koodo, the opened books won't be added to the library": "Koodoを使用してフォルダ内の図書を開くと、図書はライブラリに追加されません", + "Hide menu button": "メニューボタンを表示しない", + "Manage": "管理する", + "Sliding Animation": "ページをめくるアニメーション", + "Please turn off open books in the main window": "メインウィンドウで直接図書を開くオプションを閉じてください", + "This action will delete all the notes, bookmarks and digests of this book": "この操作により、本書のすべてのノート、ハイライト、ブックマークが削除されます", + "More formats supported": "その他のフォーマットをサポート", + "Koodo Reader's web version are limited by the browser, for more powerful features, please download the desktop version.": "Koodo ReaderのWebページ版はブラウザの制限を受けています。デスクトップ版をダウンロードして完全な機能を体験してください", + "Chinese Conversion": "従来の簡体字変換", + "Use first page as PDF cover": "PDFトップページを表紙として使用", + "You may see this error when the book you're importing is not supported by Koodo Reader, try converting it with Calibre": "この図書はしばらくサポートされていません、Calibre変換を使用して再インポートしてください", + "Shelf title can't be pure number": "本棚名は純数字ではいけません", + "Open Console": "コンソールを開く", + "Appearance": "外観", + "Light Mode": "デイモード", + "Night Mode": "ナイトモード", + "Follow OS": "フォローシステム", + "Open url with built-in browser": "組み込みブラウザを使用してリンクを開く" +} diff --git a/src/assets/locales/ko/translation.json b/src/assets/locales/ko/translation.json index 80ae04ab..4277776d 100644 --- a/src/assets/locales/ko/translation.json +++ b/src/assets/locales/ko/translation.json @@ -1,342 +1,342 @@ { - "Books": "내 책들", - "Recent": "최근에 읽은 책들", - "Bookmarks": "책갈피", - "Favorites": "내가 제일 좋아하는 책들", - "Notes": "내 노트", - "Highlights": "내 하이라이트", - "Shelf": "내 책장", - "Left": "왼쪽 맞춤", - "Justify": "양쪽 맞춤", - "Right": "오른쪽 맞춤", - "Text Align": "글자 정렬", - "Sync Successfully": "동기화 완료", - "Permanently Delete": "완전히 삭제", - "Default search engine": "기본 검색 엔진", - "Built-in font": "내장 글꼴", - "Cover": "표지모드", - "Bold": "굵은 글씨", - "Sort by": "순서 정렬", - "Italic": "기울어진 글씨", - "Text underline": "밑줄", - "Text shadow": "글자 그림자", - "Import Failed": "책 들여오기 실패", - "New Version Available": "새 버전 가능", - "New Version": "새 버전을 다운로드", - "Customize": "사용자 정의", - "Auto open book in fullscreen": "자동으로 전체화면에 책 열기", - "System Font": "시스템 글꼴", - "Access token expired, refetching token": "토큰 만료, 다시 인증하는 중", - "Access token received, please continue": "토큰 취득 완료, 작업을 계속하세요", - "Changelog": "변경 일지", - "Update Complete": "업데이트 완료", - "Fetching acess token failed": "토큰 취득 실패", - "Authorizing, please wait": "인증하는 중, 기다려 주세요", - "Downloading, please wait": "내려받는 중, 기다려 주세요", - "Uploading, please wait": "올리는 중, 기다려 주세요", - "Import": "책 들여오기", - "Backup": "백업", - "Search my library": "내 책장에서 찾기", - "Search my notes": "내 노트에서 찾기", - "Search my highlights": "내 하이라이트에서 찾기", - "Card": "카드모드", - "List": "목록모드", - "Work": "업무", - "Entertainment": "오락", - "Study": "학습", - "Author": "작가", - "Duplicate Shelf": "이미 있는 책장입니다", - "Reading Time": "읽은 시간", - "Content": "목록", - "Voice": "음색", - "Speed": "빠르기", - "Bookmark": "책갈피", - "Single-Page Mode": "한쪽 모드", - "Double-Page Mode": "양쪽 모드", - "Background Color": "배경색갈", - "Font Size": "글씨 크기", - "Font Family": "글꼴", - "Default": "기본", - "Small": "작게", - "Medium": "중간 크기", - "Large": "크게", - "Cancel Successfully": "취소 완료", - "Only supported by desktop version": "데스크톱 버전만 지원", - "Hide mimical background": "페이지 모양 배경을 숨깁니다", - "Auto hide cursor when reading": "책 읽을 때 자동으로 커서를 숨깁니다", - "Disable update notification": "업데이트 알림을 하지 않습니다", - "Roadmap": "로드맵", - "Paragraph Spacing": "문단 간격", - "Unlock": "잠금 해제", - "Lock": "잠금", - "Reading Option": "독서 선택항", - "Progress": "읽은 정도", - "Exit": "읽기를 끝냅니다", - "Language": "언어", - "Enter Fullscreen": "전체 화면", - "Exit Fullscreen": "전체화면 종료", - "Add Bookmark": "책갈피", - "Add to Shelf": "책장에 추가", - "New Shelf": "새 책장을 만들기", - "New": "새로 만들기", - "Cancel": "취소", - "Confirm": "확인", - "Delete": "삭제", - "Delete This Book": "이 책을 삭제", - "Edit Book": "책을 편집", - "Edit Successfully": "편집 완료", - "Book Name": "책이름", - "Sort by Date": "시간 정렬 추가", - "Descend": "내려가는 순서", - "Ascend": "올라가는 순서", - "Sort by Name": "책이름 순서", - "Token": "토큰", - "Book not exist": "없는 책입니다", - "Please authorize your account, and fill the following box with the token": "로그인 허가 후, 당신은 일련의 코드를 얻을 수 있습니다.코드를 아래 입력란에 입력하면 바인딩이 완료됩니다.", - "Copy Link": "링크 복사", - "Copy Token": "토큰 복사", - "Copied": "복사함", - "Chinese Coversion": "중국어 번체·간체 전환", - "Simplified To Traditional": "중국어 간체를 번체로 전환", - "Traditional To Simplified": "중국어 번체를 간체로 전환", - "Shelf Title is Empty": "책장이름 없음", - "Copy Link Successfully": "링크 복사 완료", - "Add Successfully": "추가 완료", - "Select": "선택", - "Coming Soon": "기대해 주세요", - "Understand": "이해함", - "Authorize Successfully": "인증 완료", - "Authorize Failed": "허가 실패", - "Choose your operation": "너의 조작 선택", - "Where is your data?": "데이터 위치를 선택", - "Where to keep your data?": "데이터 넣는 위치를 선택", - "I want to backup": "백업", - "I want to restore": "회복", - "Delete this shelf": "이 책장을 삭제", - "This action will clear and remove this shelf": "이 행위는 이 책장을 없애고 지웁니다", - "Delete this tag": "이 태그를 삭제", - "This action will clear and remove this tag": "이 행위는 이 태그를 없애고 지웁니다", - "Backup Successfully": "백업 완료", - "Restore Successfully": "복구 완료", - "Try refresh or restart": "소프트웨어를 다시 시작한 뒤에 적용됩니다", - "Search the book": "책에서 찾기", - "Theme Color": "주제 색갈 선택", - "Turn on text-to-speech": "책을 듣기 시작", - "Scroll Mode": "스크롤 모드", - "Loading": "로딩중", - "Note": "노트", - "Page Width": "책 넓이", - "Digest": "요약", - "Auto expand content": "자동 전개 목록", - "Hide footer": "페지 바닥글 숨기", - "Hide header": "페지 헤더 숨기", - "Book size is over 20M": "책 크기가 20M보다 큼", - "Current Font Size": "목전 크기", - "Current Chapter": "목전 장절", - "Turn off text-to-speech": "책 듣기 종료", - "Warning": "경고", - "All Tags": "모든 표지", - "Turn On Successfully": "켜기 완료", - "Turn Off Successfully": "끄기 완료", - "Turn off touch screen mode": "터치 모드 닫기", - "Use built-in font": "기본 글씨체 사용", - "Setting": "설정", - "Turn on touch screen mode": "터치 모드 사용", - "Auto open last-read book": "자동적으로 전번에 읽은 책을 열기", - "About Project": "프로젝트에 관하여", - "Developer": "개발자에 관하여", - "Please import less than 10 books": "책을 들여오기는 한번에 10권이내로 하세요", - "Please delete some books before import": "책이 너무 많습니다, 책을 조금 지운 뒤에 책 들여오기를 해보세요", - "For better user experince, please visit this site on a computer": "더 쾌적한 사용을 위해서, 이 웹사이트를 컴퓨터로 방문해 보세요", - "Wrong bookmark": "책갈피에 문제가 생겼습니다", - "Last Step": "맨끝", - "Next Step": "다음", - "Go To": "가기", - "It seems like you're lost": "찾는 게 없어진 것 같습니다", - "Return to home": "홈페이지로 돌아갑니다", - "Only desktop support this format": "데스크톱 버전만 .mobi와.txt 파일 형식을 지원", - "Only desktop support this service": "데스크톱 버전만 이 번전 형식 허용", - "Delete from Shelf": "책장에서 이 책을 삭제", - "Delete Successfully": "삭제 완료", - "This action will move this book and its the notes, bookmarks and highlights of this book to the recycle bin": "이 행위는 이 책과 노트, 책갈피, 하이라이트까지 모두 휴지통에 버립니다", - "This action won't delete the original book": "이 행위는 이 책은 책장에서만 삭제하고 책은 보류됩니다", - "From": "유래", - "Duplicate Book": "중복된 책", - "Unknown Chapter": "모르는 장절", - "Unknown Authur": "모르는 작가", - "Minute": "분", - "Empty": "아무것도 없습니다", - "Next Chapter": "다음 장절", - "Prev Chapter": "전번 장절", - "Less": "치우다", - "Current Reading Time": "열독시간: {{count}}분", - "Finish Reading Time": "유지 시간: {{count}} 분", - "Book Page": "제{{count}}페지", - "Total books": "모두 {{count}}권의 책", - "Pages": "쪽수", - "Chapters": "챕터 수", - "Translate": "번역", - "Continuous": "연속 스크롤", - "Scroll": "스크롤", - "Show in the book": "하이라이트 출처를 알리기", - "More Notes": "노트 더 보기", - "Pick Color": "색갈 선택", - "Highlight Successfully": "하이라이트 완료", - "Take Note": "노트하기", - "Highlight": "하이라이트", - "Copy Successfully": "복사 완료", - "Copy ": "복사", - "Text Color": "글자색", - "Export": "내보내기", - "Restore": "복구", - "Publisher": "출판자", - "Added at": "추가됨", - "Margin": "여백", - "Do you want to open this link in browser": "이 링크를 브라우저로 열겠습니까", - "Webdav Info": "Webdav은 쉽고 효율적인 백업방식입니다, 쿠도리더는 NextCloud에서 제공하는 Webdav 서비스를 권합니다", - "Please Wait a moment": "잠시 기다려 주세요", - "Server Address": "서버 주소", - "Username": "사용자 이름", - "Password": "암호", - "Description": "묘사", - "Sort by Recent": "요즘 열독한 책의 순서", - "Collapse sidebar": "사이드바를 치우다", - "Show sidebar": "사이드바를 열다", - "Sync": "동기화", - "Help": "도움말 문서", - "Feedback": "피드백", - "Github Repo": "Github창고", - "Speak the text": "문장 읽기", - "Search on the internet": "인터넷에서 찾기", - "Search in the book": "책에서 찾기", - "Change storage location": "저장 위치를 변경", - "Change location": "변경", - "Change Successfully": "변경 완료", - "Too many images": "책에 이미지가 너무 많아 로딩 속도에 영향을 줄 수 있어요", - "Export Successfully": "내보내기 완료", - "Change Failed": "변경 실패", - "You successfully update to": "업데이트 완료", - "Deleted Books": "휴지통", - "Delete All Books": "모든 책을 삭제", - "Sort by Duration": "열독시간에 의해 배렬", - "Sort by Author": "작가이름으로 배렬", - "Audio is not ready yet": "책 로딩중...잠시후 시도해보세요.", - "Drop your books here": "책을 여기에 가져오세요", - "Sort by Percentage": "열독진도에 의해 배렬", - "This action will remove all the books in recycle bin,together with their notes, bookmarks and digests": "이 행위는 휴지통에 있는 모든 책과 노트, 책갈피, 하이라이트, 요약을 완전히 지웁니다", - "Batch import only support epub or pdf files": "한꺼번에 책 들여오는 것은 epub와 pdf 파일만 지원합니다", - "The deleted books will show up here": "삭제된 책이 여기에 나타납니다. 휴지통을 비워야 완전히 삭제됩니다", - "Empty Recycle Bin": "휴지통이 비었습니다", - "Skip": "더 이상 제시하지 않기", - "Local": "본지자원", - "Tips": "제시", - "Brightness": "화면 밝음도", - "How sync works": "동기화 공작원이", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "동기화 기능은 타사 동기화 디스크 구현에 맞추어 다른 컴퓨터에서 데이터 저장 위치를 동일한 디스크 폴더로 수정해야 합니다. 한 컴퓨터에서 동기화를 클릭하면 Koodo의 데이터가 이 폴더에 업데이트됩니다. 네트워크 디스크 동기화 후 다른 컴퓨터에서 Koodo를 열고 동기화 버튼을 누르면 데이터가 Koodo에 동기화됩니다. 구체적인 조작방법은 도움말 문서를 확인하세요.", - "Line Height": "단락거리", - "Please turn off open books in the main window first": "먼저 기본 창에 열어둔 책을 닫으세요", - "Please turn off merge with word first": "먼저 “고효율” 공작 모드를 끄세요", - "Please choose an empty folder": "빈 폴더를 선택하세요", - "Data change detected, whether to update?": "데이터의 변화를 감지했어요. 혹시 업데이트 하겠나요?", - "Empty Library": "라이브러리가 비었습니다", - "Download": "다운로드", - "Use the fonts from your local computer": "컴퓨터의 글씨체 사용을 지원", - "Backup your data with Webdav": "Webdav로 백업", - "Click the import button to add books": "오른쪽 상단의 본지 책 들여오기 버튼을 클릭하여 책을 추가하세요", - "Turn on night mode": "야간 모드 켜기", - "Turn on auto update": "자동 업데이트 열기", - "Auto Update relys on Github Release for package hosting, if your internet doesn't have stable connection to Github, we highly recommand you to turn off this option": "자동 업데이트 기능은 Github에 의존하고 있으며 본지 네트워크가 Github에 안정적으로 액세스할 수 없다면 이 기능을 여는 것을 권장하지 않습니다. 그것을 열면 업데이트 알림은 별도로 제공하지 않습니다.", - "File size": "파일 크기", - "Take effect at next startup": "다시 책을 열때 발효", - "View Mode": "뷰 모드", - "Download Desktop Version": "데스크탑 버전을 다운로드", - "No Favorite Books": "당신이 가장 좋아하는 책이 없어요", - "Move your mouse on the top of any book, click the heart icon to add it to your favorite books": "커서를 임의의 책 위쪽으로 이동하고 하트를 클릭하여 가장 좋아하는 책에 추가해요.", - "Empty Reading Records": "읽은 기록이 없습니다", - "Empty Bookmark": "책갈피가 없습니다", - "Empty Note": "노트가 없습니다", - "Select any text and click the Note button on the popup menu": "아무 텍스트를 선택하고 팝업 메뉴에서 노트 버튼을 클릭하세요", - "Empty Highlight": "하이라이트가 없습니다", - "Select any text and click the Highlight button on the popup menu": "텍스트를 선택하면 나오는 팝업 메뉴에서 형광펜 버튼을 클릭하세요", - "Invert color": "색 반전", - "Empty Shelf": "책장이 비었습니다", - "Move your mouse on top of any book, then click the more icon to add the book to the shelf": "책을 책장에 추가하려면 책 위쪽에 있는 더보기 아이콘을 클릭하세요", - "Download failed, network problem or no backup": "다운로드 실패, 네트워크에 문제가 있거나 백업이 없습니다", - "Upload failed, check your connection": "업로드 실패, 접속상태를 확인하세요", - "Version": "버전: ", - "Not supported yet": "아직 제공하지 않습니다", - "Update to": "업데이트", - "Date": "날짜: ", - "Blue": "파란색", - "Red": "빨간색", - "Green": "초록색", - "Purple": "보라색", - "Unauthorize": "인증되지 않음", - "Remember window's size": "창 크기 기억하기", - "Letter Spacing": "글자 간격", - "Unauthorize Successfully": "인증 해제", - "Download Demo Book": "체험용 책 내려받기", - "Extra Large": "더 크게", - "Ultra Large": "훨씬 더 크게", - "Disable analytics service": "분석 서비스 사용 안함", - "Hide navigation button": "내비게이션 버튼 숨기기", - "More": "더 보기", - "Collect": "수집", - "Copy": "복사", - "Hi! Stranger": "어서오세요!", - "Sync data from storage": "저장소로부터 데이타 동기 완료", - "Click on any book to read": "읽을 책을 클릭하세요", - "Move your mouse on the top edge of the reader": "리더 창의 윗 가장자리로 마우스를 옮기세요", - "Download failed,network problem or no backup": "내려받기 실패, 네트워크에 문제가 있거나 백업이 없습니다", - "Choose your action to this book": "이 책에 대한 행위를 선택하세요", - "Edit": "편집", - "Add": "추가", - "Survey": "설문조사", - "What's new about this version": "이 버전에서 새로운 점", - "Our Website": "사이트 방문", - "What's New": "새로운 점", - "What's been fixed": "개선한 점", - "Target": "대상", - "Select All": "모두 선택", - "Excute Successfully": "실행 완료", - "Disable screen blanking": "화면 깜박임 사용안함", - "When Koodo is running, your computer won't enter sleep mode": "쿠도리더가 실행 중이면, 절전 모드로 들어가지 않습니다", - "Prevent accidental trigger": "실수로 작동하는 것 방지", - "Import books as link": "링크로 책 들여오기", - "Close main window while reading": "읽는 동안 기본 창을 닫습니다", - "Merge reader into Word": "리더를 병합하기", - "Get rid of window frame, make reader hide into Word or any text editor, and can't be detected. You need to set up the reader's position, size and style first.": "창 틀을 제거하고, 리더를 워드나 다른 텍스트 편집기에 숨겨서 감지할 수 없도록 합니다. 먼저 리더의 위치, 크기, 스타일을 설정해야 합니다.", - "The imported books will not be copied to library, only linked to the original book path": "책을 들여온다는 것은 라이브러리에 복사해 넣는 게 아닙니다, 그저 원본과 연결할 뿐입니다.", - "Reader menu will not be triggered by hovering but clicking on the area": "리더 메뉴에 마우스 커서를 올려놓는 것 만으로는 작동하지 않고 클릭해야 작동 합니다", - "Gesture and UI optimization for touch screen": "제스처와 UI를 터치스크린에 맞춥니다", - "The book that you read from last time will be open automatically when launching": "쿠도리더를 실행하면 가장 최근에 읽은 책이 바로 열립니다", - "All the folded content will be expanded in the navigation panel": "내비게이션 패널에 있는 접히는 구성들을 모두 펼칩니다", - "Reader window will be maximized to fit the screen when opening a book": "책을 열면 책읽기 창을 화면에 맞춰 최대로 엽니다", - "Open books in the main window": "기본 창에서 책을 엽니다", - "Book won't be opened in a seperate window but directly opened in the main window": "책은 개별 창으로 열리지 않고 기본 창에서 바로 열립니다.", - "Book not exsits": "없는 책입니다", - "Reach frequency limit": "요청 빈도 제한에 도달", - "Error happens": "오류 발생", - "Text Indent": "들여쓰기", - "Deselect All": "모두 선택 해제", - "Authorize": "인증", - "Open book without adding it to library": "라이브러리에 추가하지 않고 책 열기", - "When opening books in the file manager with Koodo, the opened books won't be added to the library": "탐색기에서 책을 열면, 라이브러리에 추가하지 않습니다", - "Hide menu button": "메뉴 버튼 숨기기", - "Manage": "합치기", - "Sliding Animation": "미끄러지는 애니메이션", - "Please turn off open books in the main window": "기본 창에 열어둔 책을 닫으세요", - "This action will delete all the notes, bookmarks and digests of this book": "이 행위는 이 책의 모든 노트, 책갈피, 요약을 지웁니다", - "More formats supported": "더 지원되는 형식", - "Koodo Reader's web version are limited by the browser, for more powerful features, please download the desktop version.": "웹 버전 쿠도리더는 웹 브라우저로 인한 제한이 있습니다, 더욱 강력한 기능들 사용하려면 데스크탑 버전을 다운로드 하세요.", - "Chinese Conversion": "중국어 번체·간체 전환", - "Use first page as PDF cover": "첫 페이지를 PDF 커버로 사용", - "You may see this error when the book you're importing is not supported by Koodo Reader, try converting it with Calibre": "쿠도리더에서 지원하지 않는 책 파일형식을 들여오면 이 오류가 나타날 수 있습니다, 캘리버로 책 형식을 변환해 보세요", - "Shelf title can't be pure number": "책장 이름을 숫자로만 만들면 안됩니다", - "Open Console": "콘솔을 엽니다", - "Appearance": "야간 모드", - "Light Mode": "주간 모드", - "Night Mode": "야간 모드", - "Follow OS": "시스템에 맞춤", - "Open url with built-in browser": "내장 브라우저로 URL 열기" -} \ No newline at end of file + "Books": "내 책들", + "Recent": "최근에 읽은 책들", + "Bookmarks": "책갈피", + "Favorites": "내가 제일 좋아하는 책들", + "Notes": "내 노트", + "Highlights": "내 하이라이트", + "Shelf": "내 책장", + "Left": "왼쪽 맞춤", + "Justify": "양쪽 맞춤", + "Right": "오른쪽 맞춤", + "Text Align": "글자 정렬", + "Sync Successfully": "동기화 완료", + "Permanently Delete": "완전히 삭제", + "Default search engine": "기본 검색 엔진", + "Built-in font": "내장 글꼴", + "Cover": "표지모드", + "Bold": "굵은 글씨", + "Sort by": "순서 정렬", + "Italic": "기울어진 글씨", + "Text underline": "밑줄", + "Text shadow": "글자 그림자", + "Import Failed": "책 들여오기 실패", + "New Version Available": "새 버전 가능", + "New Version": "새 버전을 다운로드", + "Customize": "사용자 정의", + "Auto open book in fullscreen": "자동으로 전체화면에 책 열기", + "System Font": "시스템 글꼴", + "Access token expired, refetching token": "토큰 만료, 다시 인증하는 중", + "Access token received, please continue": "토큰 취득 완료, 작업을 계속하세요", + "Changelog": "변경 일지", + "Update Complete": "업데이트 완료", + "Fetching acess token failed": "토큰 취득 실패", + "Authorizing, please wait": "인증하는 중, 기다려 주세요", + "Downloading, please wait": "내려받는 중, 기다려 주세요", + "Uploading, please wait": "올리는 중, 기다려 주세요", + "Import": "책 들여오기", + "Backup": "백업", + "Search my library": "내 책장에서 찾기", + "Search my notes": "내 노트에서 찾기", + "Search my highlights": "내 하이라이트에서 찾기", + "Card": "카드모드", + "List": "목록모드", + "Work": "업무", + "Entertainment": "오락", + "Study": "학습", + "Author": "작가", + "Duplicate Shelf": "이미 있는 책장입니다", + "Reading Time": "읽은 시간", + "Content": "목록", + "Voice": "음색", + "Speed": "빠르기", + "Bookmark": "책갈피", + "Single-Page Mode": "한쪽 모드", + "Double-Page Mode": "양쪽 모드", + "Background Color": "배경색갈", + "Font Size": "글씨 크기", + "Font Family": "글꼴", + "Default": "기본", + "Small": "작게", + "Medium": "중간 크기", + "Large": "크게", + "Cancel Successfully": "취소 완료", + "Only supported by desktop version": "데스크톱 버전만 지원", + "Hide mimical background": "페이지 모양 배경을 숨깁니다", + "Auto hide cursor when reading": "책 읽을 때 자동으로 커서를 숨깁니다", + "Disable update notification": "업데이트 알림을 하지 않습니다", + "Roadmap": "로드맵", + "Paragraph Spacing": "문단 간격", + "Unlock": "잠금 해제", + "Lock": "잠금", + "Reading Option": "독서 선택항", + "Progress": "읽은 정도", + "Exit": "읽기를 끝냅니다", + "Language": "언어", + "Enter Fullscreen": "전체 화면", + "Exit Fullscreen": "전체화면 종료", + "Add Bookmark": "책갈피", + "Add to Shelf": "책장에 추가", + "New Shelf": "새 책장을 만들기", + "New": "새로 만들기", + "Cancel": "취소", + "Confirm": "확인", + "Delete": "삭제", + "Delete This Book": "이 책을 삭제", + "Edit Book": "책을 편집", + "Edit Successfully": "편집 완료", + "Book Name": "책이름", + "Sort by Date": "시간 정렬 추가", + "Descend": "내려가는 순서", + "Ascend": "올라가는 순서", + "Sort by Name": "책이름 순서", + "Token": "토큰", + "Book not exist": "없는 책입니다", + "Please authorize your account, and fill the following box with the token": "로그인 허가 후, 당신은 일련의 코드를 얻을 수 있습니다.코드를 아래 입력란에 입력하면 바인딩이 완료됩니다.", + "Copy Link": "링크 복사", + "Copy Token": "토큰 복사", + "Copied": "복사함", + "Chinese Coversion": "중국어 번체·간체 전환", + "Simplified To Traditional": "중국어 간체를 번체로 전환", + "Traditional To Simplified": "중국어 번체를 간체로 전환", + "Shelf Title is Empty": "책장이름 없음", + "Copy Link Successfully": "링크 복사 완료", + "Add Successfully": "추가 완료", + "Select": "선택", + "Coming Soon": "기대해 주세요", + "Understand": "이해함", + "Authorize Successfully": "인증 완료", + "Authorize Failed": "허가 실패", + "Choose your operation": "너의 조작 선택", + "Where is your data?": "데이터 위치를 선택", + "Where to keep your data?": "데이터 넣는 위치를 선택", + "I want to backup": "백업", + "I want to restore": "회복", + "Delete this shelf": "이 책장을 삭제", + "This action will clear and remove this shelf": "이 행위는 이 책장을 없애고 지웁니다", + "Delete this tag": "이 태그를 삭제", + "This action will clear and remove this tag": "이 행위는 이 태그를 없애고 지웁니다", + "Backup Successfully": "백업 완료", + "Restore Successfully": "복구 완료", + "Try refresh or restart": "소프트웨어를 다시 시작한 뒤에 적용됩니다", + "Search the book": "책에서 찾기", + "Theme Color": "주제 색갈 선택", + "Turn on text-to-speech": "책을 듣기 시작", + "Scroll Mode": "스크롤 모드", + "Loading": "로딩중", + "Note": "노트", + "Page Width": "책 넓이", + "Digest": "요약", + "Auto expand content": "자동 전개 목록", + "Hide footer": "페지 바닥글 숨기", + "Hide header": "페지 헤더 숨기", + "Book size is over 20M": "책 크기가 20M보다 큼", + "Current Font Size": "목전 크기", + "Current Chapter": "목전 장절", + "Turn off text-to-speech": "책 듣기 종료", + "Warning": "경고", + "All Tags": "모든 표지", + "Turn On Successfully": "켜기 완료", + "Turn Off Successfully": "끄기 완료", + "Turn off touch screen mode": "터치 모드 닫기", + "Use built-in font": "기본 글씨체 사용", + "Setting": "설정", + "Turn on touch screen mode": "터치 모드 사용", + "Auto open last-read book": "자동적으로 전번에 읽은 책을 열기", + "About Project": "프로젝트에 관하여", + "Developer": "개발자에 관하여", + "Please import less than 10 books": "책을 들여오기는 한번에 10권이내로 하세요", + "Please delete some books before import": "책이 너무 많습니다, 책을 조금 지운 뒤에 책 들여오기를 해보세요", + "For better user experince, please visit this site on a computer": "더 쾌적한 사용을 위해서, 이 웹사이트를 컴퓨터로 방문해 보세요", + "Wrong bookmark": "책갈피에 문제가 생겼습니다", + "Last Step": "맨끝", + "Next Step": "다음", + "Go To": "가기", + "It seems like you're lost": "찾는 게 없어진 것 같습니다", + "Return to home": "홈페이지로 돌아갑니다", + "Only desktop support this format": "데스크톱 버전만 .mobi와.txt 파일 형식을 지원", + "Only desktop support this service": "데스크톱 버전만 이 번전 형식 허용", + "Delete from Shelf": "책장에서 이 책을 삭제", + "Delete Successfully": "삭제 완료", + "This action will move this book and its the notes, bookmarks and highlights of this book to the recycle bin": "이 행위는 이 책과 노트, 책갈피, 하이라이트까지 모두 휴지통에 버립니다", + "This action won't delete the original book": "이 행위는 이 책은 책장에서만 삭제하고 책은 보류됩니다", + "From": "유래", + "Duplicate Book": "중복된 책", + "Unknown Chapter": "모르는 장절", + "Unknown Authur": "모르는 작가", + "Minute": "분", + "Empty": "아무것도 없습니다", + "Next Chapter": "다음 장절", + "Prev Chapter": "전번 장절", + "Less": "치우다", + "Current Reading Time": "열독시간: {{count}}분", + "Finish Reading Time": "유지 시간: {{count}} 분", + "Book Page": "제{{count}}페지", + "Total books": "모두 {{count}}권의 책", + "Pages": "쪽수", + "Chapters": "챕터 수", + "Translate": "번역", + "Continuous": "연속 스크롤", + "Scroll": "스크롤", + "Show in the book": "하이라이트 출처를 알리기", + "More Notes": "노트 더 보기", + "Pick Color": "색갈 선택", + "Highlight Successfully": "하이라이트 완료", + "Take Note": "노트하기", + "Highlight": "하이라이트", + "Copy Successfully": "복사 완료", + "Copy ": "복사", + "Text Color": "글자색", + "Export": "내보내기", + "Restore": "복구", + "Publisher": "출판자", + "Added at": "추가됨", + "Margin": "여백", + "Do you want to open this link in browser": "이 링크를 브라우저로 열겠습니까", + "Webdav Info": "Webdav은 쉽고 효율적인 백업방식입니다, 쿠도리더는 NextCloud에서 제공하는 Webdav 서비스를 권합니다", + "Please Wait a moment": "잠시 기다려 주세요", + "Server Address": "서버 주소", + "Username": "사용자 이름", + "Password": "암호", + "Description": "묘사", + "Sort by Recent": "요즘 열독한 책의 순서", + "Collapse sidebar": "사이드바를 치우다", + "Show sidebar": "사이드바를 열다", + "Sync": "동기화", + "Help": "도움말 문서", + "Feedback": "피드백", + "Github Repo": "Github창고", + "Speak the text": "문장 읽기", + "Search on the internet": "인터넷에서 찾기", + "Search in the book": "책에서 찾기", + "Change storage location": "저장 위치를 변경", + "Change location": "변경", + "Change Successfully": "변경 완료", + "Too many images": "책에 이미지가 너무 많아 로딩 속도에 영향을 줄 수 있어요", + "Export Successfully": "내보내기 완료", + "Change Failed": "변경 실패", + "You successfully update to": "업데이트 완료", + "Deleted Books": "휴지통", + "Delete All Books": "모든 책을 삭제", + "Sort by Duration": "열독시간에 의해 배렬", + "Sort by Author": "작가이름으로 배렬", + "Audio is not ready yet": "책 로딩중...잠시후 시도해보세요.", + "Drop your books here": "책을 여기에 가져오세요", + "Sort by Percentage": "열독진도에 의해 배렬", + "This action will remove all the books in recycle bin,together with their notes, bookmarks and digests": "이 행위는 휴지통에 있는 모든 책과 노트, 책갈피, 하이라이트, 요약을 완전히 지웁니다", + "Batch import only support epub or pdf files": "한꺼번에 책 들여오는 것은 epub와 pdf 파일만 지원합니다", + "The deleted books will show up here": "삭제된 책이 여기에 나타납니다. 휴지통을 비워야 완전히 삭제됩니다", + "Empty Recycle Bin": "휴지통이 비었습니다", + "Skip": "더 이상 제시하지 않기", + "Local": "본지자원", + "Tips": "제시", + "Brightness": "화면 밝음도", + "How sync works": "동기화 공작원이", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "동기화 기능은 타사 동기화 디스크 구현에 맞추어 다른 컴퓨터에서 데이터 저장 위치를 동일한 디스크 폴더로 수정해야 합니다. 한 컴퓨터에서 동기화를 클릭하면 Koodo의 데이터가 이 폴더에 업데이트됩니다. 네트워크 디스크 동기화 후 다른 컴퓨터에서 Koodo를 열고 동기화 버튼을 누르면 데이터가 Koodo에 동기화됩니다. 구체적인 조작방법은 도움말 문서를 확인하세요.", + "Line Height": "단락거리", + "Please turn off open books in the main window first": "먼저 기본 창에 열어둔 책을 닫으세요", + "Please turn off merge with word first": "먼저 “고효율” 공작 모드를 끄세요", + "Please choose an empty folder": "빈 폴더를 선택하세요", + "Data change detected, whether to update?": "데이터의 변화를 감지했어요. 혹시 업데이트 하겠나요?", + "Empty Library": "라이브러리가 비었습니다", + "Download": "다운로드", + "Use the fonts from your local computer": "컴퓨터의 글씨체 사용을 지원", + "Backup your data with Webdav": "Webdav로 백업", + "Click the import button to add books": "오른쪽 상단의 본지 책 들여오기 버튼을 클릭하여 책을 추가하세요", + "Turn on night mode": "야간 모드 켜기", + "Turn on auto update": "자동 업데이트 열기", + "Auto Update relys on Github Release for package hosting, if your internet doesn't have stable connection to Github, we highly recommand you to turn off this option": "자동 업데이트 기능은 Github에 의존하고 있으며 본지 네트워크가 Github에 안정적으로 액세스할 수 없다면 이 기능을 여는 것을 권장하지 않습니다. 그것을 열면 업데이트 알림은 별도로 제공하지 않습니다.", + "File size": "파일 크기", + "Take effect at next startup": "다시 책을 열때 발효", + "View Mode": "뷰 모드", + "Download Desktop Version": "데스크탑 버전을 다운로드", + "No Favorite Books": "당신이 가장 좋아하는 책이 없어요", + "Move your mouse on the top of any book, click the heart icon to add it to your favorite books": "커서를 임의의 책 위쪽으로 이동하고 하트를 클릭하여 가장 좋아하는 책에 추가해요.", + "Empty Reading Records": "읽은 기록이 없습니다", + "Empty Bookmark": "책갈피가 없습니다", + "Empty Note": "노트가 없습니다", + "Select any text and click the Note button on the popup menu": "아무 텍스트를 선택하고 팝업 메뉴에서 노트 버튼을 클릭하세요", + "Empty Highlight": "하이라이트가 없습니다", + "Select any text and click the Highlight button on the popup menu": "텍스트를 선택하면 나오는 팝업 메뉴에서 형광펜 버튼을 클릭하세요", + "Invert color": "색 반전", + "Empty Shelf": "책장이 비었습니다", + "Move your mouse on top of any book, then click the more icon to add the book to the shelf": "책을 책장에 추가하려면 책 위쪽에 있는 더보기 아이콘을 클릭하세요", + "Download failed, network problem or no backup": "다운로드 실패, 네트워크에 문제가 있거나 백업이 없습니다", + "Upload failed, check your connection": "업로드 실패, 접속상태를 확인하세요", + "Version": "버전: ", + "Not supported yet": "아직 제공하지 않습니다", + "Update to": "업데이트", + "Date": "날짜: ", + "Blue": "파란색", + "Red": "빨간색", + "Green": "초록색", + "Purple": "보라색", + "Unauthorize": "인증되지 않음", + "Remember window's size": "창 크기 기억하기", + "Letter Spacing": "글자 간격", + "Unauthorize Successfully": "인증 해제", + "Download Demo Book": "체험용 책 내려받기", + "Extra Large": "더 크게", + "Ultra Large": "훨씬 더 크게", + "Disable analytics service": "분석 서비스 사용 안함", + "Hide navigation button": "내비게이션 버튼 숨기기", + "More": "더 보기", + "Collect": "수집", + "Copy": "복사", + "Hi! Stranger": "어서오세요!", + "Sync data from storage": "저장소로부터 데이타 동기 완료", + "Click on any book to read": "읽을 책을 클릭하세요", + "Move your mouse on the top edge of the reader": "리더 창의 윗 가장자리로 마우스를 옮기세요", + "Download failed,network problem or no backup": "내려받기 실패, 네트워크에 문제가 있거나 백업이 없습니다", + "Choose your action to this book": "이 책에 대한 행위를 선택하세요", + "Edit": "편집", + "Add": "추가", + "Survey": "설문조사", + "What's new about this version": "이 버전에서 새로운 점", + "Our Website": "사이트 방문", + "What's New": "새로운 점", + "What's been fixed": "개선한 점", + "Target": "대상", + "Select All": "모두 선택", + "Excute Successfully": "실행 완료", + "Disable screen blanking": "화면 깜박임 사용안함", + "When Koodo is running, your computer won't enter sleep mode": "쿠도리더가 실행 중이면, 절전 모드로 들어가지 않습니다", + "Prevent accidental trigger": "실수로 작동하는 것 방지", + "Import books as link": "링크로 책 들여오기", + "Close main window while reading": "읽는 동안 기본 창을 닫습니다", + "Merge reader into Word": "리더를 병합하기", + "Get rid of window frame, make reader hide into Word or any text editor, and can't be detected. You need to set up the reader's position, size and style first.": "창 틀을 제거하고, 리더를 워드나 다른 텍스트 편집기에 숨겨서 감지할 수 없도록 합니다. 먼저 리더의 위치, 크기, 스타일을 설정해야 합니다.", + "The imported books will not be copied to library, only linked to the original book path": "책을 들여온다는 것은 라이브러리에 복사해 넣는 게 아닙니다, 그저 원본과 연결할 뿐입니다.", + "Reader menu will not be triggered by hovering but clicking on the area": "리더 메뉴에 마우스 커서를 올려놓는 것 만으로는 작동하지 않고 클릭해야 작동 합니다", + "Gesture and UI optimization for touch screen": "제스처와 UI를 터치스크린에 맞춥니다", + "The book that you read from last time will be open automatically when launching": "쿠도리더를 실행하면 가장 최근에 읽은 책이 바로 열립니다", + "All the folded content will be expanded in the navigation panel": "내비게이션 패널에 있는 접히는 구성들을 모두 펼칩니다", + "Reader window will be maximized to fit the screen when opening a book": "책을 열면 책읽기 창을 화면에 맞춰 최대로 엽니다", + "Open books in the main window": "기본 창에서 책을 엽니다", + "Book won't be opened in a seperate window but directly opened in the main window": "책은 개별 창으로 열리지 않고 기본 창에서 바로 열립니다.", + "Book not exsits": "없는 책입니다", + "Reach frequency limit": "요청 빈도 제한에 도달", + "Error happens": "오류 발생", + "Text Indent": "들여쓰기", + "Deselect All": "모두 선택 해제", + "Authorize": "인증", + "Open book without adding it to library": "라이브러리에 추가하지 않고 책 열기", + "When opening books in the file manager with Koodo, the opened books won't be added to the library": "탐색기에서 책을 열면, 라이브러리에 추가하지 않습니다", + "Hide menu button": "메뉴 버튼 숨기기", + "Manage": "합치기", + "Sliding Animation": "미끄러지는 애니메이션", + "Please turn off open books in the main window": "기본 창에 열어둔 책을 닫으세요", + "This action will delete all the notes, bookmarks and digests of this book": "이 행위는 이 책의 모든 노트, 책갈피, 요약을 지웁니다", + "More formats supported": "더 지원되는 형식", + "Koodo Reader's web version are limited by the browser, for more powerful features, please download the desktop version.": "웹 버전 쿠도리더는 웹 브라우저로 인한 제한이 있습니다, 더욱 강력한 기능들 사용하려면 데스크탑 버전을 다운로드 하세요.", + "Chinese Conversion": "중국어 번체·간체 전환", + "Use first page as PDF cover": "첫 페이지를 PDF 커버로 사용", + "You may see this error when the book you're importing is not supported by Koodo Reader, try converting it with Calibre": "쿠도리더에서 지원하지 않는 책 파일형식을 들여오면 이 오류가 나타날 수 있습니다, 캘리버로 책 형식을 변환해 보세요", + "Shelf title can't be pure number": "책장 이름을 숫자로만 만들면 안됩니다", + "Open Console": "콘솔을 엽니다", + "Appearance": "야간 모드", + "Light Mode": "주간 모드", + "Night Mode": "야간 모드", + "Follow OS": "시스템에 맞춤", + "Open url with built-in browser": "내장 브라우저로 URL 열기" +} diff --git a/src/assets/locales/pt-BR/translation.json b/src/assets/locales/pt-BR/translation.json index c2aa3cfe..82e27cee 100644 --- a/src/assets/locales/pt-BR/translation.json +++ b/src/assets/locales/pt-BR/translation.json @@ -232,7 +232,7 @@ "Tips": "Pontas", "Brightness": "Brilho", "How sync works": "Como a sincronização funciona", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Você precisa alterar o local de armazenamento para a mesma pasta do servidor da nuvem em computadores diferentes. Quando você clicar no botão de sincronização, Koodo Reader irá enviar ou baixar automaticamente seus dados para esta página e manter os dados sincronizados através de todos os seus computadores. Visite nossa documentação para mais instruções.", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Você precisa alterar o local de armazenamento para a mesma pasta do servidor da nuvem em computadores diferentes. Quando você clicar no botão de sincronização, Koodo Reader irá enviar ou baixar automaticamente seus dados para esta página e manter os dados sincronizados através de todos os seus computadores. Visite nossa documentação para mais instruções.", "Line Height": "Altura da linha", "Please turn off open books in the main window first": "Por favor, desabilite abrir livros na janela principal primeiro", "Please turn off merge with word first": "Por favor, desabilite mesclar com palavras primeiro", diff --git a/src/assets/locales/ru/translation.json b/src/assets/locales/ru/translation.json index 20792eed..892d7091 100644 --- a/src/assets/locales/ru/translation.json +++ b/src/assets/locales/ru/translation.json @@ -232,7 +232,7 @@ "Tips": "Советы", "Brightness": "Яркость", "How sync works": "Как работает синхронизация", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Вам нужно изменить место хранения на одну и ту же папку облачного диска на разных компьютерах. Когда вы нажмете кнопку синхронизации, Koodo Reader будет автоматически загружать или скачивать ваши данные из этой папки и синхронизировать их на всех ваших компьютерах. Посетите наш документ для получения более подробных инструкций.", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "Вам нужно изменить место хранения на одну и ту же папку облачного диска на разных компьютерах. Когда вы нажмете кнопку синхронизации, Koodo Reader будет автоматически загружать или скачивать ваши данные из этой папки и синхронизировать их на всех ваших компьютерах. Посетите наш документ для получения более подробных инструкций.", "Line Height": "Высота строки", "Please turn off open books in the main window first": "Пожалуйста, сначала отключите открытые книги в главном окне", "Please turn off merge with word first": "Please turn off merge with word first", diff --git a/src/assets/locales/tw/translation.json b/src/assets/locales/tw/translation.json index 28b9c18f..762b6c48 100644 --- a/src/assets/locales/tw/translation.json +++ b/src/assets/locales/tw/translation.json @@ -232,7 +232,7 @@ "Tips": "提示", "Brightness": "屏幕亮度", "How sync works": "同步是如何實現的?", - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "同步功能需要配合第三方同步盤實現,在不同電腦上把數據存儲位置修改為同一個網盤文件夾,點擊同步按鈕後,Koodo會自動進行數據的雙向同步。目前該功能還處在測試階段,請謹慎使用。", + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp.": "同步功能需要配合第三方同步盤實現,在不同電腦上把數據存儲位置修改為同一個網盤文件夾,點擊同步按鈕後,Koodo會自動進行數據的雙向同步。目前該功能還處在測試階段,請謹慎使用。", "Line Height": "行距", "Please turn off open books in the main window first": "請關閉直接在主窗口打開圖書", "Please turn off merge with word first": "請關閉摸魚模式", diff --git a/src/components/background/component.tsx b/src/components/background/component.tsx index ecf779de..e307c4b8 100644 --- a/src/components/background/component.tsx +++ b/src/components/background/component.tsx @@ -20,9 +20,9 @@ class Background extends React.Component { if (!background) return; background?.setAttribute( "style", - `background-color:${StorageUtil.getReaderConfig( - "backgroundColor" - )};filter: brightness(${ + `background-color:${ + StorageUtil.getReaderConfig("backgroundColor") || "rgba(255,255,255,1)" + };filter: brightness(${ StorageUtil.getReaderConfig("brightness") || 1 }) invert(${StorageUtil.getReaderConfig("isInvert") === "yes" ? 1 : 0})` ); diff --git a/src/components/popups/popupMenu/component.tsx b/src/components/popups/popupMenu/component.tsx index 63259c11..48b6b0e3 100644 --- a/src/components/popups/popupMenu/component.tsx +++ b/src/components/popups/popupMenu/component.tsx @@ -69,7 +69,7 @@ class PopupMenu extends React.Component { this.renderHighlighters(); }, 1000); - doc.addEventListener("mousewheel", () => { + doc.addEventListener("wheel", () => { this.renderHighlighters(); }); } diff --git a/src/constants/settingList.tsx b/src/constants/settingList.tsx index a4bdf437..617fedb0 100644 --- a/src/constants/settingList.tsx +++ b/src/constants/settingList.tsx @@ -92,7 +92,7 @@ export const langList = [ { label: "日本語", value: "jp" }, { label: "čeština", value: "cs" }, { label: "Deutsch", value: "de" }, - { label: "한국인", value: "ko" }, + { label: "한국어", value: "ko" }, ]; export const searchList = [ diff --git a/src/containers/header/component.tsx b/src/containers/header/component.tsx index a90bd190..f7b5910a 100644 --- a/src/containers/header/component.tsx +++ b/src/containers/header/component.tsx @@ -143,7 +143,7 @@ class Header extends React.Component { if (StorageUtil.getReaderConfig("isFirst") !== "no") { this.props.handleTipDialog(true); this.props.handleTip( - "You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp." + "Sync function works with third-party cloud drive. You need to manually change the storage location to the same sync folder on different computers. When you click the sync button, Koodo Reader will automatically upload or download the data from this folder according the timestamp." ); StorageUtil.setReaderConfig("isFirst", "no"); return; diff --git a/src/containers/htmlViewer/component.tsx b/src/containers/htmlViewer/component.tsx index a3b62312..5e3aae21 100644 --- a/src/containers/htmlViewer/component.tsx +++ b/src/containers/htmlViewer/component.tsx @@ -96,7 +96,8 @@ class Viewer extends React.Component { .getAttribute("style")! .substring(0, reader.getAttribute("style")!.indexOf("width")) ); - this.handlePageWidth(); + StorageUtil.getReaderConfig("readerMode") !== "scroll" && + this.handlePageWidth(); } if (this.props.currentBook.format === "EPUB") { let doc = getIframeDoc(); @@ -145,7 +146,8 @@ class Viewer extends React.Component { this.state.rendition.removeContent(); } - this.handlePageWidth(); + StorageUtil.getReaderConfig("readerMode") !== "scroll" && + this.handlePageWidth(); window.rangy.init(); BookUtil.fetchBook(key, true, path).then((result) => { @@ -206,7 +208,6 @@ class Viewer extends React.Component { rendition: rendition, }); this.setState({ rendition }); - this.setState({ pageWidth: rendition.getPageSize().width, pageHeight: rendition.getPageSize().height, @@ -217,26 +218,27 @@ class Viewer extends React.Component { this.props.currentBook.format === "EPUB" ? false : true ) ); - - let bookLocation: { - text: string; - count: string; - chapterTitle: string; - percentage: string; - cfi: string; - } = RecordLocation.getHtmlLocation(this.props.currentBook.key); - await rendition.goToPosition( - JSON.stringify({ - text: bookLocation.text, - chapterTitle: bookLocation.chapterTitle, - count: bookLocation.count, - percentage: bookLocation.percentage, - cfi: bookLocation.cfi, - }) - ); + if (this.props.currentBook.format !== "EPUB") { + let bookLocation: { + text: string; + count: string; + chapterTitle: string; + percentage: string; + cfi: string; + } = RecordLocation.getHtmlLocation(this.props.currentBook.key); + await rendition.goToPosition( + JSON.stringify({ + text: bookLocation.text, + chapterTitle: bookLocation.chapterTitle, + count: bookLocation.count, + percentage: bookLocation.percentage, + cfi: bookLocation.cfi, + isFirst: true, + }) + ); + } rendition.on("rendered", async () => { - await this.handleLocation(); let bookLocation: { text: string; count: string; chapterTitle: string } = RecordLocation.getHtmlLocation(this.props.currentBook.key); diff --git a/src/containers/lists/navList/component.tsx b/src/containers/lists/navList/component.tsx index 9097956b..83a8cdf9 100644 --- a/src/containers/lists/navList/component.tsx +++ b/src/containers/lists/navList/component.tsx @@ -17,7 +17,6 @@ class NavList extends React.Component { toast(this.props.t("Wrong bookmark")); return; } - console.log(cfi); let bookLocation; try { bookLocation = JSON.parse(cfi) || {}; diff --git a/src/containers/pageWidget/component.tsx b/src/containers/pageWidget/component.tsx index 696b6a52..9d1598f8 100644 --- a/src/containers/pageWidget/component.tsx +++ b/src/containers/pageWidget/component.tsx @@ -3,6 +3,7 @@ import "./background.css"; import { BackgroundProps, BackgroundState } from "./interface"; import StorageUtil from "../../utils/serviceUtils/storageUtil"; import { Trans } from "react-i18next"; +import RecordLocation from "../../utils/readUtils/recordLocation"; class Background extends React.Component { isFirst: Boolean; constructor(props: any) { @@ -22,20 +23,35 @@ class Background extends React.Component { async UNSAFE_componentWillReceiveProps(nextProps: BackgroundProps) { if (nextProps.htmlBook !== this.props.htmlBook && nextProps.htmlBook) { + await this.handlePageNum(nextProps.htmlBook.rendition); nextProps.htmlBook.rendition.on("page-changed", async () => { - let pageInfo = await nextProps.htmlBook.rendition.getProgress(); - - this.setState({ - prevPage: this.state.isSingle - ? pageInfo.currentPage - : pageInfo.currentPage * 2 - 1, - nextPage: this.state.isSingle - ? pageInfo.currentPage - : pageInfo.currentPage * 2, - }); + await this.handlePageNum(nextProps.htmlBook.rendition); + await this.handleLocation(); }); } } + handleLocation = async () => { + let position = await this.props.htmlBook.rendition.getPosition(); + RecordLocation.recordHtmlLocation( + this.props.currentBook.key, + position.text, + position.chapterTitle, + position.count, + position.percentage, + position.cfi + ); + }; + async handlePageNum(rendition) { + let pageInfo = await rendition.getProgress(); + this.setState({ + prevPage: this.state.isSingle + ? pageInfo.currentPage + : pageInfo.currentPage * 2 - 1, + nextPage: this.state.isSingle + ? pageInfo.currentPage + : pageInfo.currentPage * 2, + }); + } render() { return ( @@ -63,21 +79,23 @@ class Background extends React.Component { {this.props.currentChapter}

)} - {!this.state.isHideHeader && !this.state.isSingle && ( -

- {this.props.currentBook.name} -

- )} + } + : {} + } + > + {this.props.currentBook.name} +

+ )}
{!this.state.isHideFooter && this.state.prevPage > 0 && ( diff --git a/src/containers/pageWidget/index.tsx b/src/containers/pageWidget/index.tsx index a1689929..a9893297 100644 --- a/src/containers/pageWidget/index.tsx +++ b/src/containers/pageWidget/index.tsx @@ -1,7 +1,10 @@ import { connect } from "react-redux"; import { stateType } from "../../store"; import Background from "./component"; - +import { + handleCurrentChapter, + handleCurrentChapterIndex, +} from "../../store/actions"; const mapStateToProps = (state: stateType) => { return { currentBook: state.book.currentBook, @@ -12,5 +15,5 @@ const mapStateToProps = (state: stateType) => { isShowBookmark: state.viewArea.isShowBookmark, }; }; -const actionCreator = {}; +const actionCreator = { handleCurrentChapter, handleCurrentChapterIndex }; export default connect(mapStateToProps, actionCreator)(Background); diff --git a/src/containers/pageWidget/interface.tsx b/src/containers/pageWidget/interface.tsx index 716e1794..518d13b5 100644 --- a/src/containers/pageWidget/interface.tsx +++ b/src/containers/pageWidget/interface.tsx @@ -7,6 +7,8 @@ export interface BackgroundProps { currentChapterIndex: number; htmlBook: HtmlBookModel; isShowBookmark: boolean; + handleCurrentChapter: (currentChapter: string) => void; + handleCurrentChapterIndex: (currentChapterIndex: number) => void; } export interface BackgroundState { isSingle: boolean; diff --git a/src/containers/panels/progressPanel/component.tsx b/src/containers/panels/progressPanel/component.tsx index f4979db6..87f00b1f 100644 --- a/src/containers/panels/progressPanel/component.tsx +++ b/src/containers/panels/progressPanel/component.tsx @@ -47,7 +47,11 @@ class ProgressPanel extends React.Component< if (this.props.htmlBook.flattenChapters.length > 0) { this.props.htmlBook.rendition.goToChapter( this.props.htmlBook.flattenChapters[ - Math.floor(this.props.htmlBook.flattenChapters.length * percentage) + percentage === 1 + ? this.props.htmlBook.flattenChapters.length - 1 + : Math.floor( + this.props.htmlBook.flattenChapters.length * percentage + ) ].label ); } @@ -120,17 +124,16 @@ class ProgressPanel extends React.Component< } return (
- {this.props.percentage && ( -

- - Progress:{" "} - {Math.round( - this.props.percentage > 1 ? 100 : this.props.percentage * 100 - )} - %    - -

- )} +

+ + Progress:{" "} + {Math.round( + this.props.percentage > 1 ? 100 : this.props.percentage * 100 + )} + %    + +

+

Pages { this.handleJumpChapter(event); }} - value={this.props.currentChapterIndex} + value={ + this.props.currentChapterIndex === -1 + ? this.props.htmlBook.flattenChapters.length + : this.props.currentChapterIndex + 1 + } /> / {this.props.htmlBook.flattenChapters.length}

diff --git a/src/pages/manager/component.tsx b/src/pages/manager/component.tsx index 7e8a7c85..0c19b473 100644 --- a/src/pages/manager/component.tsx +++ b/src/pages/manager/component.tsx @@ -23,7 +23,7 @@ import { Toaster } from "react-hot-toast"; //判断是否为触控设备 const is_touch_device = () => { - return "ontouchstart" in window; + return "ontouchstart" in window || navigator.maxTouchPoints > 0; }; class Manager extends React.Component { diff --git a/src/store/actions/progressPanel.tsx b/src/store/actions/progressPanel.tsx index 25e33605..b096e21d 100644 --- a/src/store/actions/progressPanel.tsx +++ b/src/store/actions/progressPanel.tsx @@ -8,7 +8,7 @@ export function handlePercentage(percentage: number) { } export function handleFetchPercentage(book: BookModel) { return (dispatch: (arg0: { type: string; payload: any }) => void) => { - let percentage = RecordLocation.getHtmlLocation(book.key).percentage; + let percentage = RecordLocation.getHtmlLocation(book.key).percentage || 0; dispatch(handlePercentage(percentage)); }; diff --git a/src/utils/readUtils/styleUtil.tsx b/src/utils/readUtils/styleUtil.tsx index 5e10d7f8..881341dd 100644 --- a/src/utils/readUtils/styleUtil.tsx +++ b/src/utils/readUtils/styleUtil.tsx @@ -15,7 +15,8 @@ class styleUtil { `background-color:${ StorageUtil.getReaderConfig("isMergeWord") === "yes" ? "rgba(0,0,0,0)" - : StorageUtil.getReaderConfig("backgroundColor") + : StorageUtil.getReaderConfig("backgroundColor") || + "rgba(255,255,255,1)" };filter: brightness(${ StorageUtil.getReaderConfig("brightness") || 1 }) invert(${StorageUtil.getReaderConfig("isInvert") === "yes" ? 1 : 0})` diff --git a/src/utils/serviceUtils/mouseEvent.tsx b/src/utils/serviceUtils/mouseEvent.tsx index 3f5caaaf..1789723d 100644 --- a/src/utils/serviceUtils/mouseEvent.tsx +++ b/src/utils/serviceUtils/mouseEvent.tsx @@ -51,9 +51,9 @@ const arrowKeys = (rendition: any, keyCode: number, event: any) => { handleShortcut(event, keyCode); }; -const mouseChrome = (rendition: any, wheelDelta: number) => { +const mouseChrome = (rendition: any, deltaY: number) => { if (lock) return; - if (wheelDelta > 0) { + if (deltaY < 0) { rendition.prev(); lock = true; setTimeout(function () { @@ -61,7 +61,7 @@ const mouseChrome = (rendition: any, wheelDelta: number) => { }, throttleTime); return false; } - if (wheelDelta < 0) { + if (deltaY > 0) { rendition.next(); lock = true; setTimeout(function () { @@ -157,14 +157,23 @@ export const bindHtmlEvent = ( arrowKeys(rendition, event.keyCode, event); await handleLocation(key, rendition); }); + //判断是否正在使用笔记本电脑的的触控板 + doc.addEventListener( - "mousewheel", + "wheel", async (event) => { if (readerMode === "scroll") { await sleep(200); rendition.record(); } else { - mouseChrome(rendition, event.wheelDelta); + if ( + event.wheelDeltaY + ? event.wheelDeltaY === -3 * event.deltaY + : event.deltaMode === 0 + ) { + throttleTime = 1000; + } + Math.abs(event.deltaX) === 0 && mouseChrome(rendition, event.deltaY); } await handleLocation(key, rendition);