From bbeb2a957fa7a5eb2cdd452cf759e595ffa65abb Mon Sep 17 00:00:00 2001 From: Runbing Date: Tue, 18 Apr 2023 18:23:36 +0800 Subject: [PATCH] Fixed the bug that caused DeepL to not work properly. fixed #16 --- __init__.py | 4 +++- components/engine.py | 8 ++++++-- engines/custom.py | 2 +- engines/deepl.py | 7 ++----- translations/es.mo | Bin 8726 -> 8881 bytes translations/es.po | 13 +++++++++++-- translations/message.pot | 40 +++++++++++++++++++++++++-------------- translations/zh_CN.mo | Bin 7980 -> 8109 bytes translations/zh_CN.po | 13 +++++++++++-- translations/zh_TW.mo | Bin 7954 -> 8083 bytes translations/zh_TW.po | 13 +++++++++++-- 11 files changed, 71 insertions(+), 29 deletions(-) diff --git a/__init__.py b/__init__.py index b22e1ae3..28afccd2 100644 --- a/__init__.py +++ b/__init__.py @@ -1,5 +1,7 @@ from calibre.customize import InterfaceActionBase +from calibre_plugins.ebook_translator.utils import _z + __license__ = 'GPL v3' __copyright__ = '2023, bookfere.com ' @@ -9,7 +11,7 @@ class EbookTranslator(InterfaceActionBase): - name = 'Ebook Translator' + name = _z('Ebook Translator') title = _(name) supported_platforms = ['windows', 'osx', 'linux'] author = 'bookfere.com' diff --git a/components/engine.py b/components/engine.py index 99a36aa5..e87a515e 100644 --- a/components/engine.py +++ b/components/engine.py @@ -98,7 +98,7 @@ def layout(self): def check_usage(text): if text is not None: - usage.setText('Usage: {}'.format(text)) + usage.setText(_('Usage: {}').format(text)) usage.setVisible(True) else: usage.setVisible(False) @@ -111,11 +111,15 @@ def check_usage(text): self.translate_worker.deleteLater) self.translate_thread.start() + def translate_result(text): + target.setPlainText(text) + self.usage_worker.check.emit() + self.translate_worker.result.connect(translate_result) + def test_translate(): self.translate_worker.translate.emit( source.toPlainText(), source_lang.currentText(), target_lang.currentText()) - self.translate_worker.result.connect(target.setPlainText) translate.clicked.connect(test_translate) def done(self, result): diff --git a/engines/custom.py b/engines/custom.py index 5310e909..43ef4791 100644 --- a/engines/custom.py +++ b/engines/custom.py @@ -120,7 +120,7 @@ def parse(response): result = eval( self.engine_data.get('response'), {"response": response}) if is_str(result): - raise Exception(_('Resposne was parsed incorrectly.')) + raise Exception(_('Response was parsed incorrectly.')) return result return self.get_result( diff --git a/engines/deepl.py b/engines/deepl.py index abe347b5..f1aab158 100644 --- a/engines/deepl.py +++ b/engines/deepl.py @@ -21,17 +21,14 @@ def usage_info(data): total = usage.get('character_limit') used = usage.get('character_count') left = total - used - return '{} total, {} used, {} left'.format(total, used, left) + return _('{} total, {} used, {} left').format(total, used, left) return self.get_result( self.endpoint.get('usage'), callback=usage_info, silence=True, headers={'Authorization': 'DeepL-Auth-Key %s' % self.api_key}) def translate(self, text): - headers = { - 'Content-Type': 'application/json', - 'Authorization': 'DeepL-Auth-Key %s' % self.api_key, - } + headers = {'Authorization': 'DeepL-Auth-Key %s' % self.api_key} data = { 'text': text, diff --git a/translations/es.mo b/translations/es.mo index 78fca6a65d0060729b0504202872fb56675d7c91..4e3292edd86910a3f9176ad3da168978ab88d216 100644 GIT binary patch delta 2625 zcmYk;e@vBC9LMn^TmeCZKqa)|0hHemP~@+=0wI)HNTEo8c8SZ6q99!?ty@#!{`@OGo&U5bboacMa zVZ7Mz?k4w_49^RO5+<%ACgY76!_Gv$C}$TLQ;pxCx;)9oEXBpR5Oa~Am_p3JQp`jz zYTUh;g?+dJT};83k>9&!oJtKHZ^t^!1uUmMgO#|P(Mzxi6L33n$#h{c_M;|p7&XBo zsBy1hHoj@wr!bxNY1{q*m+^e_o4xS2y^y##mWd^(2bAKqxDD4}0Bdm^t8f|{FgrCi zekUqpPh%3kkNNls=HLu^Fp0Oy=lLd;N+DJu_cHCM)b(2Tp_b-3)EiEqQvMz)r6*At z_zt7oaA%4jrsRO|09t`*AhxgQ({nPbdHS!3jF}m`T34r}+wt@MqKm6Ru&S;cC?N zCe#huP!s7yZ88`2<}cxLjM(d6U<2)0EWm1JtBJK|kbm897aeSH6SO{#WY3JCZhY9b zk0Bp(k}vIvFOhqiOSlaGK|UsxBcRRapq6qyYC_G{Uet4kT`Ky)A&l-?jP6?7K80H2 z)2InvM5S=n_GfbU)&<5?;0F3fn1#lDgv!L{sQX?*W%@E+k5@2y95a}fW>}8us7Ix! z3;CG+d?{70;6^-Z+vl;4_O$IUCQZuN0P2B{p^mAGYw;P>1g20EJcDdP*PNrGHN1#A zE(zpSn=%dc;FWkI=A!mM3u;^li}6WZi{t3vuh@u6V;?kOJs!uq@Graty}WIs&i`I2 zn&~9ogrA{Od=<6Ha>-*Q7NAZ=8*0f8AVbU%I)i0+7He@1^#{hw!sBL^*SK!fgC50I zIE>2J>&PR`2RY_9Emeq4ZsgvvuPVt@6N`a5jL=22f_rrTm$+6_vql1Xl(x7HR?*+q0l zYsU1T-tT7O0YX!WBUEmS5q&*Xw-D9DPBkbx6F!1Jwb9b3OFCEswnOyVy3R)p(M?p? zzIh&@5+v#gy}Qc&#O*|gSVyQdjkY9ZxmvEeXq*2LQ2RrrfzT3ZUulU|?j+iXFtLM} zFD!x?vJGvU`O;2Be=@XEIskq`tMxFkk)W{d6z#1wg!bTlgo+NpAfY4QO!N`khz_Ek zxSLSXzS~3a=fvzLR1yeB6mk}ga&=#;85gTN}ne#5Q=!y--utaZ`cV3!@j{X zhuYqdzb9H5^!J7%=QCG%MxSyL;`O7;StZHk4Dkp4KR!G#IPiq8Cs-6Jj{a`Q9}4>d IVLxs2A4Y!odjJ3c delta 2495 zcmYk+e@vBC9LMqRMU0CA0*d$}E*DYxp`d^WB|i<2%%BWHOCu~ae-f}tTlJVZvy9PX z>X@~qwPwpd!rQW%I;WfUPm|5G)zmH5AJuYgjr_y@(D&zg&YEZU`@GIM_qpde&-a{j zM;Z?{c-Pb84;ZD7xSu#a&g?_1O5j5IBGIfAM^IhA;S~G}$75)M89%WEOvi~h86&9s zN--0c;SB7=iTEn=d(ZYzDW~JTpu^5#5$*4BA>P6i%;Q)0;bNrAs<8l@Q4{GyO>jHv zzMVK7-*)XIm`eMYYkz|oJm1c`jw`4PTtf|f8>ivyB(n;v#yWfnOYkdfz~52#7bORo z>cBAVcQF@-FdI)|JpSbRuVNn0_g{}OET7j@%F3O~Q4{J!z1eH1RPRQmaxd!5KSsu~ z&u}K5L}lO-D)qmh#{UO(-yP)LEO`?7*Nmo9(F`M4gf$q&EvWAYFoOGW7LK^@e?+bM zzo-d@$!`=>Q4=e1?FyVjdlhQDH&FM#l}i4p+deLgVIN>V9!EX!GUniz`+jO#Fu+{Y zMCPI1um$zz>v1aXa^DYQ1MO2d7emZe6U#?EuQ;9jvyrWa4%v)k$5x^S?sDxN$jA0_ z(VjSrjA>tD23|luc9n}Z-QTFCOynqNLJ?;<>cJ~e_pkA&XsvosKYZD>-$$+SA=Jc9 zpi+1W+d^hHa0%@Sp04lvQ5kq0HQq2P#UEi79z%_H0X4B-UE8}wMX5<+nwn`P7p15b zYq8z64`4m*!><1tDpOgcNe`TlI+kTvi8ZJRyn>pbhuVDapqB0sa!Ne=mWp=cdDMe1 z;sU%J++gF$cLD7b)WDS(#a?W}{kQ>t#-&(K8Xv*kxEM!K_a*T9nqUi-;cA?t^FKgE zyE29g@oUs6_ye^@ndFtK6{1qy$R&zhr~!AO&ieo=lLt{RavF8)&ZAyn6qTvlsPRLb z?IfOW3#e!_RiRSaf|}4;oR90U4hK#xNWIbNw?}Xzh_&)Wo|{_iaZ_%tK}R zQ=Eq<(5s|!or=~flQX9YWFz~_icu3=iY3^FO6eZwY1DmVs0W3a&1{^6%Ge@gXlr$D zMLxEVOAUUWP5uk1{7Hui%}u-idnCK_sho6xlX*2HBr> z1-096A|H#(3GT~9-B+8_6TD#u9XgjAkpp2nP!kwLrEVDYhG$W4_8n^NZ=n9LZej>^ zugb;%|EiQPbM3yNHxnj%kGYl>x13N8*Ap61J4fXi;%UET_8e-u+P0m9W)MfHR0a62 z|1foJeXZ46*S{Q}CHM#ROQVL?lwWWiqTAI=aS_o)Xp7!kUZk;&s3-E=7pqZcPDL9@ zrD>=)oaq%%t5cKmIH7&3@(`hw(LvM7sx%W%`Zco-r-%~0s!*x}{Oc;N#e^1U7V$ix zeZPg!wxW3cRa;8?ReNxy-xF+~&D8Z5)8hKt@F`*gvBLGGAe+PgQ{LqIv;)|w|Cc9R zZ7bHgy7qsA*1LjA4xy8_gwXa{M?6UAbZeWX5v{};BAIxUP-!O~AR@6J5)0#E;iT^P Xxc+Uip43mq#fqoo#>e`nrA@dCb79Hc diff --git a/translations/es.po b/translations/es.po index 514e146a..c715156f 100644 --- a/translations/es.po +++ b/translations/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Ebook Translator Calibre Plugin\n" "Report-Msgid-Bugs-To: bookfere@gmail.com\n" -"POT-Creation-Date: 2023-04-17 17:25+0800\n" +"POT-Creation-Date: 2023-04-18 18:14+0800\n" "PO-Revision-Date: 2023-04-17 14:17+0800\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -18,6 +18,9 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Ebook Translator" +msgstr "Traductor de libros electrónicos" + msgid "Translating..." msgstr "Traduciendo..." @@ -30,6 +33,9 @@ msgstr "Traducir" msgid "Usage: checking..." msgstr "Uso: verificación..." +msgid "Usage: {}" +msgstr "Uso: {}" + msgid "Custom Translation Engine" msgstr "Motor de Traducción Personalizado" @@ -114,9 +120,12 @@ msgstr "Se requiere una expresión para analizar la respuesta." msgid "Custom" msgstr "Personalizado" -msgid "Resposne was parsed incorrectly." +msgid "Response was parsed incorrectly." msgstr "La respuesta fue analizada incorrectamente." +msgid "{} total, {} used, {} left" +msgstr "{} en total, {} utilizado(s), {} restante(s)" + msgid "Youdao" msgstr "Youdao" diff --git a/translations/message.pot b/translations/message.pot index c2fcf42f..35ed66ea 100644 --- a/translations/message.pot +++ b/translations/message.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Ebook Translator Calibre Plugin\n" "Report-Msgid-Bugs-To: bookfere@gmail.com\n" -"POT-Creation-Date: 2023-04-17 17:25+0800\n" +"POT-Creation-Date: 2023-04-18 18:14+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,6 +17,10 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" +#: __init__.py:14 +msgid "Ebook Translator" +msgstr "" + #: components/engine.py:40 msgid "Translating..." msgstr "" @@ -33,47 +37,51 @@ msgstr "" msgid "Usage: checking..." msgstr "" -#: components/engine.py:131 +#: components/engine.py:101 +msgid "Usage: {}" +msgstr "" + +#: components/engine.py:135 msgid "Custom Translation Engine" msgstr "" -#: components/engine.py:140 +#: components/engine.py:144 msgid "Add" msgstr "" -#: components/engine.py:141 +#: components/engine.py:145 msgid "Delete" msgstr "" -#: components/engine.py:144 main.py:574 +#: components/engine.py:148 main.py:574 msgid "Clear" msgstr "" -#: components/engine.py:145 +#: components/engine.py:149 msgid "Reset" msgstr "" -#: components/engine.py:146 +#: components/engine.py:150 msgid "Verify" msgstr "" -#: components/engine.py:147 main.py:272 +#: components/engine.py:151 main.py:272 msgid "Save" msgstr "" -#: components/engine.py:187 +#: components/engine.py:191 msgid "Engine data format is valid." msgstr "" -#: components/engine.py:203 +#: components/engine.py:207 msgid "The engine name is already in use." msgstr "" -#: components/engine.py:211 main.py:770 +#: components/engine.py:215 main.py:770 msgid "The setting was saved." msgstr "" -#: components/engine.py:217 +#: components/engine.py:221 msgid "No custom engine to delete." msgstr "" @@ -93,7 +101,7 @@ msgstr "" msgid "API Key" msgstr "" -#: engines/base.py:89 tests/test_deepl.py:44 +#: engines/base.py:89 tests/test_deepl.py:45 msgid "Can not parse returned response. Raw data: {}" msgstr "" @@ -146,7 +154,11 @@ msgid "Custom" msgstr "" #: engines/custom.py:123 -msgid "Resposne was parsed incorrectly." +msgid "Response was parsed incorrectly." +msgstr "" + +#: engines/deepl.py:24 +msgid "{} total, {} used, {} left" msgstr "" #: engines/youdao.py:14 diff --git a/translations/zh_CN.mo b/translations/zh_CN.mo index bbab52a5558484184d510734db21c6c8001de31a..3c5aa3f56497826f8a7d54502a61748ff2a2c260 100644 GIT binary patch delta 2625 zcmXxleN5F=9LMn!Tmc1?Kp`ph$_)@i1B?iwiyDDgMv@Pq2wjo~lkO$BtTnS=&3|(C zV2Twk%VwcA$=1ypK@Uv-V6C>?vZt*F9}u=i&9xr3{^|Ys-NPB*`#R_Re!p|h?>ziC zf5@Q1=z0!%G`K8I5QyYJ_#T3`6L}Blh~IxRCN$%)(3d`V8h( zYoCJ}U>SOG6>4BDw%mc)l=q_gJDtM(>wyob;LnWkL!0I+T!KHLI*hxXjfUB%>ouqb zHlqg8h}vWh>djxlbd1>RUtksGDa^rQMyr7}q%!|%u$c-rxCvRGKxWVEK{b59mfu1C z%n(1?6JH{2nsJSB|5W@PfU56?IIfPy_qd))z3HYHtNHP{)*$p-)p~FKj_|9I)k} zz21wOseQKob=2N?8w>Fq>IMEnbvT>CW?YRGcok~2@ zZQNCEnf-v8Eu|`gPlfxfNl*o;me5fS6Au#8Ni*AR3;yX!Y#{V)(n|Pg>F+1D5y`}TgwiIWoLCeYoS7dprzI5H>D|yB z2=;Ua!lCZSg~WDGOt2^7PkAdgbJuQfI1~zZQOnf#xdHSXC{u2>@#_#c2SDzl9eD_Tr`eWp|@sHl0=sRKadrw~Zq@TR`AFCDp APyhe` delta 2495 zcmYk-e@vBC9LMo5Kk8mYS($>0WR;1Qi zWUaC`RxR6bMc1O1Yt1>jEU6_dvAI0;L6>SC-zs;mjiu?;nle$)WBpxSN2 z>G-6VhcHBWpO-(vT;6Y=dc`r+44g!D{1;Bcl8I*Z*o3XP8EfzZjN%Wd_LW)5nd-zK z<()Va2XO|DVmf}~^(U~D_a{D&KCFz-)RaZscGQ5nP+#^iYN~gjrg8xF<*y@s+1q$2 zj-qDZC~E4DqxwIGYWENFZI+eI{A)zh$!LUOti)z4#Eq!?Ph%LL!(trq`(L5f{CCs< zgUoLshEM~m@p3(0PI(2YzeiB*9}6-6Jyrb4zMvt!Fp9d~2? z;+zz-Z}AGs*}Pr%7oeVBg6eO*+lzYPX7_P-59&i=Z<5j4e}dX1r%)aIgf)21%O!k9 zHRTG_9$AU3iamvD|1#=W4xt7%?DePJanwN1B3;^_$@-X0VxINlTvSKJs0QU;Zb9vZ zg*X>`P$Pc<^`dvM6TibooX5>;a0_anA7d&0i0Xeb)1>k=EYkUJC8HZ_umm@tHsLd< zfsLXDbQtNwj-xi)dDL^+tdq<`9oGWXmo}iDkD^|<6xD7k>iKP$$@^_D88zJJzK?2n z2n+FZoQ-Et1I*=V-ETmhg88TytaW#z*8Bjf-C^Xop$63C zwxg!L6SWir?puC;4E6j`Ow15!#?E^=qaeB4i&6I@xBxo}nE%8N3l-{M1a+)FMEyd2 z;q}K*13HQ7_zda`^{|d>2w8rcfofNex*zrOa@2F(UVhN;?+EuLA9$V$y>JLM!u_ZL zjiJuz5ig%cbu^AzkJtq<$B9zJKu1z?9gHUYdgug0pPv2%R7O zJSp8ytW4z0?nHf_wtE-BKCo0msWC}nfv+QfJ)v{E+Uwi#4nk*D=~{KI?R{6Gn7s6O zz80?}x(S_~|EK#X^b+$4?KY)b37s{itCHBl!A-&ZSUIIuuUU#SJ+EcwUr2>yHhH1xLM5&sst7HB_WxQ!zl|G-W`d++mHZ!5hwK(xrV5e{(mg~q(LpFJ zCvGFw6N?EYZ7ViM;z#vvRgknJSm^)KO`f|KTRgAb5Y>9ulPMx9hgu%kYx%zf{sq(f%A)`P diff --git a/translations/zh_CN.po b/translations/zh_CN.po index 2084176e..5a5c1cd9 100644 --- a/translations/zh_CN.po +++ b/translations/zh_CN.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Ebook Translator Calibre Plugin\n" "Report-Msgid-Bugs-To: bookfere@gmail.com\n" -"POT-Creation-Date: 2023-04-17 17:25+0800\n" +"POT-Creation-Date: 2023-04-18 18:14+0800\n" "PO-Revision-Date: 2023-04-17 14:17+0800\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -17,6 +17,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Ebook Translator" +msgstr "电子书翻译器" + msgid "Translating..." msgstr "翻译中……" @@ -29,6 +32,9 @@ msgstr "翻译" msgid "Usage: checking..." msgstr "用量:检查中……" +msgid "Usage: {}" +msgstr "用量:{}" + msgid "Custom Translation Engine" msgstr "自定义翻译引擎" @@ -113,9 +119,12 @@ msgstr "用来解析响应的表达式是必填项。" msgid "Custom" msgstr "自定义" -msgid "Resposne was parsed incorrectly." +msgid "Response was parsed incorrectly." msgstr "响应没有正确解析。" +msgid "{} total, {} used, {} left" +msgstr "总计 {},已用 {},剩余 {}" + msgid "Youdao" msgstr "有道" diff --git a/translations/zh_TW.mo b/translations/zh_TW.mo index 4fe9c4e5c1579c061e8114d828f1308a874919a5..313a3965aec74e7c32a9c0e3fb97fe2db867cdfe 100644 GIT binary patch delta 2625 zcmXxleN5F=9LMn^Tm<4l0+H0jDJ< zE9qbFe3$Hb-jD*st;ATQF{iLTnlI9)vBnhOXQ(RAO~%Z{c#Og&$RlPMCSxw9U z+BRR~LJXm1!ZRnl1aYYLGg0^Dp~H_hC1f;3b`PT#Iso-PA_@YhoG2VvXqB@*?GaC(;qOO;t z8mL7Lq#m`&9Mmr#ztth41~csu1j%)@t4GxnRk9zpLKNG#rgb5ZS7SS!OiriP4Wput|)hwAu%Egwe4 zW{#omd&SnDN3HcJY5-r^at!ODau$|hHEIBZxDG!-owj(UIY;Nekc>vwh-$DI)!~!2 zegJbRzl1s!KBip*8V3{JHMktn15_V8XG_Z zNJn*0gt~F3)rT5To3#fu)rU~OFlfDMum6gA{y$qEwJ1DeS*U)C7cu`@(;6z&aXXgd zAyk9os0OA{$Ltr>%tUZe^@*qfrJ|N1!p%@F1Xw6PVyXfcRqBW^xjh1Mbx`FV|F9k-xLy$5Nr?=K`7lF#+`6ww-N%!6)C_^5Y~*T$|ST8V1nVWN$=pHR~N+DB*`>>-r26}-yWRAueN z4K}a0cbRti8ZsHg3Su3hjrk~X7vUkap|$C^5e-BF@c^MzLlhH>gTt}QBjz;u{d>Gs zUB1rl4qw3E75pNu)f3U#9V|&Y9l79OuQ%Wi_&Qd2$@O$M?{+gC%`Ji84=I7jHNa4_=shXEZc?Zt{hpU{%_s=!~fg7ehlwc<9F1vy*SXF?C|d=8wKMeflJM^FPBo B{iFZ@ delta 2495 zcmYk-e@vBC9LMo5KjNp@6&1AdhJpeTB;*w;;93!psg-G(A!MbNm?$i>Ry~b^QG z#_R9`?8JP02zfrR9b^(zJR4QmyI4*66wbkOI3CM+DhuZ!Rn~-+*oGQN4{Cs0QTIKD zQ}HP;zl1T$uX_0{oJ{}rj#qqwnt?A-4gZBxuxy-JJvQNdydP_E2wU)b)cw^3(M&DJ z9Ll?}6#MaFJdT<8sn?&ua{3Qnk2b7=*VL3H+y$rsb)w$vVboMVftt#ls5d`=v}J>M zAs$D~z(=U5KaFbtSJZuD$h%p=`OLpYG?k1-7{_XC#uD6sy1pCZ*oQOls9*mWwdQA0 z1I%H5OE88SSgn`qaVF&zsP-O3-M>A?{FAq5_@WKlj}>?r)!`^k$KU*V(S)dhS*U?j zq26#Y>dn_;5kBtM_hAd=VVs3&j8+4yK=oHs$o#XBt(gkhhRlvFK{dSE%MT(S+sT*q z#0yB9b_^%ud&tMm@TE=nGioVwISLw3+)bc5UWmHCJs_jC>P9`d#mjq8Yy3QFU~izN za2Q+D%)Z7t%9Zr4)6k9@@H$j`fx83M;cj=pJ%ZX>!3Y^m^=Z^5`4iPZ7Q?Q^0#rGP zmtrfbZRFL_2v_za$sd-)Nz&H(147=l3rehTHAJ1 z$6LKT=;f1mE%oP69XGN*jkpQR@d)a8j-m!IhH5X1=?>5T3^KaVfK`}8oq{gZ!1kdA zbO?FYhEWZSqMrN3{R1_VW2hyIvwnKM0=0<~sQZ_r+UdZ2o&N{O=*I2t9@LEks9k;# z)xi5$hCiS>7|$qlY^R{=8&Ge&3bp1>qT1Pud~Cm$-$V`IZ4A`GXMW*tH=UiK0p+?y zsHrbSz2Q=~*RS`XI(pIT520r4B+{gPfm-w5Q61+^6l?U>E9GJ%{>* zI^gxMp$0UBYWRegKSyoC?@-6>tk>t!sAixT^;|iszJgHs1tx`|_w(N<)O;N!v!34oswzY)L zkA9w%I*8lDoY`H-?hdziC$j#QPAD}-g!6no`5OqG+f`n_0Pi4TUgoHDguk)(c!gNw zdHtfyB~}wU0{>5&C~PFIBDBktZX>P^bL>91wSRL?aZpKVzSrE0`Xf}jhTs<=+)nzF zRB9t`4Rah0SCkN&l_51ngx@Rpt|7Dl+P-%aGl>mEGeOd^ivDBfA-lqssDd<`=pyu6 zwwO>_N~|Q-5eo?=Z7ViMxcci=LDG)Uf%`Ar;+gv}>3Qvj7Oi(Zndw9oaV4SscqefM zkx6JDYp>r(v=aryB0^~yaXArBeV98tJ(V+VO=f!U##DFgU`DEDQg24;Sn){qzi(E_ A)Bpeg diff --git a/translations/zh_TW.po b/translations/zh_TW.po index 1a360d7c..61488858 100644 --- a/translations/zh_TW.po +++ b/translations/zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Ebook Translator Calibre Plugin\n" "Report-Msgid-Bugs-To: bookfere@gmail.com\n" -"POT-Creation-Date: 2023-04-17 17:25+0800\n" +"POT-Creation-Date: 2023-04-18 18:14+0800\n" "PO-Revision-Date: 2023-04-17 23:49+0800\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -18,6 +18,9 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.1.1\n" +msgid "Ebook Translator" +msgstr "電子書翻譯器" + msgid "Translating..." msgstr "翻譯中..." @@ -30,6 +33,9 @@ msgstr "翻譯" msgid "Usage: checking..." msgstr "使用量:檢查中..." +msgid "Usage: {}" +msgstr "使用量:{}" + msgid "Custom Translation Engine" msgstr "自訂翻譯引擎" @@ -114,9 +120,12 @@ msgstr "必須提供剖析回應的運算式。" msgid "Custom" msgstr "自訂" -msgid "Resposne was parsed incorrectly." +msgid "Response was parsed incorrectly." msgstr "回應剖析不正確。" +msgid "{} total, {} used, {} left" +msgstr "總計 {},已用 {},剩餘 {}" + msgid "Youdao" msgstr "有道"