From 7b3cc3f7d68bea60202f52042dc7e390d50d0724 Mon Sep 17 00:00:00 2001 From: Nathan Crawford Date: Wed, 11 Dec 2013 19:33:07 -0500 Subject: [PATCH] Fall back to English for missing strings A placeholder string is still returned if the English translation is missing or incomplete --- embroideryReader/Translation.cs | 13 +++++++++++++ embroideryReader/frmSettingsDialog.cs | 1 + translations/English (EN-US).ini | 1 + translations/translations.ods | Bin 16057 -> 16125 bytes 4 files changed, 15 insertions(+) diff --git a/embroideryReader/Translation.cs b/embroideryReader/Translation.cs index 02b827b..3512a7d 100644 --- a/embroideryReader/Translation.cs +++ b/embroideryReader/Translation.cs @@ -10,6 +10,7 @@ namespace embroideryReader { private const string TRANSLATIONS_FOLDER = "translations"; private const string TRANSLATION_FILE_EXT = ".ini"; + private const string DEFAULT_TRANSLATION_NAME = "English (EN-US)"; // String IDs public enum StringID { @@ -77,12 +78,14 @@ namespace embroideryReader ENABLE_TRANSPARENCY_GRID, LANGUAGE, GRID_SIZE, + TRANSLATION_INCOMPLETE, // This must be last. Used for checking completeness of translation files. TOTAL_COUNT, }; IniFile translationFile; + IniFile defaultFile; public Translation(String name) { @@ -109,6 +112,7 @@ namespace embroideryReader public void Load(String translationName) { translationFile = new IniFile(System.IO.Path.Combine(TRANSLATIONS_FOLDER, translationName + TRANSLATION_FILE_EXT)); + defaultFile = new IniFile(System.IO.Path.Combine(TRANSLATIONS_FOLDER, DEFAULT_TRANSLATION_NAME + TRANSLATION_FILE_EXT)); } // Returns the translated string, or a string representation of the @@ -117,10 +121,19 @@ namespace embroideryReader { string retval; retval = translationFile.getValue(sid.ToString()); + + // Check the default translation if string is not found in the loaded translation + if (retval == null) + { + retval = defaultFile.getValue(sid.ToString()); + } + + // If it's not found in the default, return a placeholder string if (retval == null) { retval = "%" + sid.ToString() + "%"; } + return retval; } diff --git a/embroideryReader/frmSettingsDialog.cs b/embroideryReader/frmSettingsDialog.cs index 9054521..81c4267 100644 --- a/embroideryReader/frmSettingsDialog.cs +++ b/embroideryReader/frmSettingsDialog.cs @@ -161,6 +161,7 @@ namespace embroideryReader txtGridSize.Left = lblGridSize.Left + lblGridSize.Width + 5; lblGridSizePixels.Text = translation.GetTranslatedString(Translation.StringID.PIXELS); lblGridSizePixels.Left = txtGridSize.Left + txtGridSize.Width + 5; + lblIncompleteTranslation.Text = translation.GetTranslatedString(Translation.StringID.TRANSLATION_INCOMPLETE); } private void cmbLanguage_SelectedIndexChanged(object sender, EventArgs e) diff --git a/translations/English (EN-US).ini b/translations/English (EN-US).ini index 5936edb..4f47025 100644 --- a/translations/English (EN-US).ini +++ b/translations/English (EN-US).ini @@ -61,3 +61,4 @@ ENABLE_TRANSPARENCY_GRID=Enable transparency grid LANGUAGE=Language OK=OK GRID_SIZE=Grid size: +TRANSLATION_INCOMPLETE=Translation is incomplete diff --git a/translations/translations.ods b/translations/translations.ods index 81b0ca52567e303fcb2141c256b1060d28f95fc0..724df038fb9569e3a466e4d00619484e5ce9371d 100644 GIT binary patch delta 8223 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 F{SQqgYSjP$ delta 8130 zcmZ8mWmKHYvK=%q1PksEf)m``2@XMn1P^Y(ErSL3!QI{69fA)I!3pj+WLnOm|2ClfJWdYb&~Ck%R>gRjTi8~()}w0 zM^ing7D5DL!};u>>l@ss@bght(!gx|;hsCn0)^@I;+8D!l_tm2){rTn_^Vv;uDUEY z!yf@JM3yF}l)SsPQj|hL8AtdOI2mgw-dEbLcBs({Zwdq0h97@+ospW(pP%B6M{70k z4`7sQ2srx~1SIg9^5*kvf7Q4M#ocb{mupY|NY?F_IO%>4`gtVimHw?qT{N`Cfb3fm z#{otLQz~C;sc?Gx0|LDfqIEsfr}knEwTi*OnOFH%Z+-W700EW?*i|L{m2F?_Ca4Se zhnzEKI3jNwtc2pn@a~@$&(P0ml%7;b;Jf!29!nr+$6I3Zpa63mg{=xV|8+j{< z+M=vO+r^e<<`P?BwAMX%!^vNG3_tAB8*fpRCer9 zX<^AgI;y{9F}?|R`VAk_;UOIW^R1o9$t$w93NE;02BP044-Lr&-yT8&!ty_8z#AQF z*pT9XVS93(o?h8Mv47sAdo8O<%$^yGQhZ1KTJDIBP2!+660*VoVH?e@EBZ?%l?@VBx^nM~;xZ`tDpBK2 zC0!P&Fcn(dzc2UBt=6oVJA__5o>-QO59OZPj96Aba5Bj5qvVDgP>iM}>lPCy;yD)A zVPC{sniMxr^&aeULlR%(_QpUQlJ*PgbjKxHqv1yeW`694&E+XL*;z1V-nsZt3=C$0 zV(MCk%wn4Mv6wg+cDHZHGhsUhqT2Ac_}8{K6(;I8wV`fyw{l0Gn-Mu9(1ZPzav{F-VRPYAWc-c1z_d7bFVlqn$Uf8ZPxT6y{YE)@|R{n`~Q+4k7y+nE3 zqKS3jWRIUxR$RP`cqWfs83kd8??89T(o~a*9NlaZnz&cU?{{dN;$jREv|ow?A>v~e z4{gHRNv&4h-n+-RdXg?QLd)F;A?^i?Mh~miKSC@p7HG%4Lr2zbsscNy8(6Btec#3= z57~s*nvg@5NmaVO9@!9aQ4&u#KOS9Px1m1!T;ycAI`%|Gv(Mn7nztd6OpJanxv)@3 za8(dqO|yd0ZkCV_&Ipjm-KUZQRnRH|4cXA&y`94LSvBTH#zP>PGs{+hE7*jZorosw z!Al~}Vr;rSWub3;LRlx(!KM1{Fu{Vgo1W^U=^EL0ct%uv=Dh*!b9pL;eC-#;xc#!> z%9)NJAaEz2iD^cx`b&7Tas)8}VSfkp_2scATG;n@Qa@op1$XueF{L4AATb#hhOWA? zK}lj)qZpKR7GU2^ue6U&45q1+pL;5ZPO~k|GDs(w7B&_yIT_o=-Ry=zNr_;aHwX z6P1?S8ux%NCGZo1ftWt8KNuV)M+q z7>}7G^tz7;v`1Z2WcVp<#!{um2g)q{gt2#J$f5RT z4^2{6S$;3WbQ92m<@O=|6PN2pQ{c+04Tw%37A7*s;2!n52g8e|(->hK7zSP{w^`m>!{97F%MAh;`ja}Kva*8CsxrEFT zTka$vubOK5pm(xl2O(BVA=TqE;q+{ z5q7PHt$83S!Tqa^{J~A2t3x$NwME=`$yHBY+ZdZN$ZY7Pqkj>GXRdVA9dT zM!w8|@T=JwSL@F?3(_X-x>`92!UdXDyI?C7kE8IcH#dn_51;}svh$#TX$23<+f`sUMf1^VU5{2q|Hv%_tZ5Y#j9B;{l_>nd@a%y)43Hjw%Q8{jS zvsdb|46`I*A{+Ez$%@REg1m-J&p=w>7wTRIA_uhq%Evxd80wxe8!_UHEYwq(XCL|( z`~D*{(4g-FvVr~-Cw+^jrmoT@6{YzkODO9|&P?~iktDZb*pZqzMsV$z(Hc&@PB0J8 zt$1s#{>VCYV}2H=XTuXbJffv*`Ff+o!rW@1pxrKc=!K{JOvUdNZ;|-hgi^> zlFCLzQ&NOhc=d{4LuD(CIpflifdRl(X$?gs0a#=ulV2JezCv{Aea*0Z`K@|{k%EHd ztDII5?{Noy?r@3hHZub|!y)?VH+LuNi>|z1J>H-R9sxe`QO@uEEBg=rt&{4Y2SLWj zkofq;tJB8xY+hqDy*HPqSo2M#UI$E6l$ZfC+}^5*qgYc>2<$_)UNGgGNsY;;3;P9d za+FiWb!8EGUE?w&qe!oREy9^y3Rf=7B|enDx%}Vez;cWo%|H9BP}-+?;S}bHoUPzJb8gwn)vq{2x);*|&nvYF_Axwf3x+goW@4o0`6uD%Et(aeAp@D8gXv8<U29+;oabOnueG{X{X%GEzEEULFaM4Z8)0|nGi);V*%4>yZ+lDnOqgZO*%va zh5^HX&i5e>nYMH1d)eaM!ow-jg=M(?AFv2P3(t!>RI9Y3XIi@MT;AGewdSa1Im_vD z#D=1B4P|#Xyz&Tgj_IS3;u=x1^5y%?7O%z4JHLq4>1#d`DRV~(zL0<8(no@RUYL`O z_UYqHqW#ES5=;BqO0qxo(CAy=m#F=EV^}@mptz~D+rzv%wHDrh7^QMpFgnfq9#45qvp#j8_v-HjR?g1k}exhy_y5mQxHLZ846VS|k#R>Ok> zIX7slVa~^yL?`=DxF}9xOR4wrS?}B@5Lg~eKRUMdY`0iS9NUx;(DPAyG!q4jlmquE zP-a8hrf7|`C1o2OfXz8|(sK1-TX^x=AZ$wX5(EOAEFSQ&#nY#_@?pbXo&}LAt~XrO z*oi`B^h}F`8oDXtTEGxoe#bTfROnH%i|iLiuAfG7fkcl@QeUDfG_58Khgqxmi3=+#XUsjHr{l>!@gc&tIGO_`LskHkLv+a%|H> zozbo($SK)Q+k`ha{Z(cJ9IkCSko2;l#}hLT!UNw+UXz81GHul6z3;Q`k!_b8u!SpD z3}F62Pv<^yNld=g+RmRN&BIf=mf-u&R zMO@nOCm3~PYsxoPup%AX7@=c{P7X8H!&NOPkqT&bY@J{)bK7Z2l zZa)`mB|12TmoQOfUq-pQuTWxhwrNsLEhV@c+M7EG1ksf)H7MDz==(j+kZvD3>0#+d zd*KR}Rf3#>zyyWONNx+=K<>^%wA1^iRRa^<$Vw0YrJcRm%1p^@v+#9A!~;0ab2H*! zvS@mAbGW3!4Eia?f|@zZ?RmoV{@! zVCt64w@{+V$l}r6OXv4d2QpLrZCgFtu}nc=3(!P8i;wRIW9l6yG0X$se(cPazHFr} zQtY1m0s;{ZNa&BuJ)}@9X%S3#YP1Gmz>w-}qfgiFgrezWrrH{wf630f9{x?tRXx!K4&0Z+j-||$F|$*9|xISvelgWk?O-ErB4H^?$6nmZ$%bk1Tn z`WQ-wF7JhqfncN}{O+*Z#t)_U;{uoYtJKA`iTyYff*qkdgkr#1W_Wki%3*@GUc-|Tl5AUduSNwEQ})$RU=KY zSuUoUK991s{SB(UrbI)$ax}Yl*75*i7m=cwkVAjl?Tm3E9l`{4MA3xdcl$d*dXoAO z%BxN9VJ=%Dt3czssav<3dv~*jcyYj2#n~2d^(&a5n*I}ix{VWwM_Rj*q9+k=)K1ba zc}Gf;d(_cJw0@2#9D)&0;y{(RUa0YLsJYDqE(W3wKT-4fVx~;~fO}@31?J&nxuT=i za8K7)IwW!VVM8>@5DV4(uGx>m+9x2RXSDe{u$-s|$~%8@dV9R^y$=G~=s6gb{!0;> z4;BbMc57ncoTOaB1b5fyHpuQvzU#;l=S(ivT^x8~6u8L?z${0QmD6eHr{t&cL(>tE zx(V{{ay!p0doCxK#7j(ydm53FvDLh^qR%q{8&S_n4;M#)PYx^kR@$)+#VOF-&pwwh zz!jxdjiTz_-=#4w!pHmecQql)B+}G6|fNY&6?x2`g z5}0`I*&2swBJdT|X>b18RKw8G7^%-xMnsDr@JmCB@24^ji+1~SB3qX^GV?A|wRObB zFgZ-dR!Q7DfLk;&c$71F@jG5f%8N$+Z7Cz!3$m`~IfME+tP{dI{*}~N4C@KLW2;eClkQK?JFnAMSon8Ww;93Gq-vWis}Ym;^?f+!xF`Iw)_jYi z(ZsgYIi*X%^nmzrgM@~Oa`vP!1ju&Ib>u~oMcB+exo#b)HUg5JN2XkWJ>tf_M_;D-f3T>B-#d(-z$9bOh;HmUh~X?^HwG>evls$d2E%8pht zskZXeY>3t_7JPSA-dg$5lBf(_>Lg142)MYVtPK<1tVk^fV2qGw>E7r+vJ{85l0`1& z&W+uEonSQWH{08cf{p1vRl-FZ`S5XiYcl)QKnPyb&}9$~z}jH>T8Ln?^>94V0qHYu zW7%s^5+x}I2 z!E3EkfXtNP$xJ2=nYk`*zJW}=(EBOP{GS{q@H6Q0fe@$^S{1Gq z#`LzCWg)#=OFqyg0uu9leAV!Jq8A^c3{M1QmZ44_EAsoaK1`@5;nk)#SLYJ8I9dy8 zQx(r_(LFPbQRYM+N;Cs{K1!e8Ei^>5XMdv?NJQ`rR=|NzIXeyg{A&!q7mt&h+tt%T z0G#r$M6xg$Ys-Dh2)i^THN2xwK$?~bd<>)6&3yR5+p4)dZ<3JI>Sl{o>62!UCj^(t zleC-F)RRMGpLqWwcOFWN6v^GT=eQ2yg6Zg!f|S_#s&7mx6*D6^Qvemsqmk&&qB~02 zA*3(6FFRYV%*MreilW%M<2Kncsd!`%X5z;a`hbw>TbwS1O0%e?mC{w*9|E;4Ri#~M zm3>sC(6BXKX9DIZE9P8CRL;+?(lnq{kqV0#1R2VV_a#}`DV6LTtxmL-{|LnWN~#fR z>Lobn4tbf=#G>Fmr*e*eeouZGB2NWLE@IGMOs2+NIc$v`Cvd?P=BbTX&`{smm8YNH zSkT8g0USKtTY7a|e*TGQs3>%;nq}#6s*{DW4MfZMi zal^ZYjS?TQ^#vPe3ljvtv`7}F{U^@K_ruS8_sxN;Q9U=HG^A0hGXrc=azZsyGnve3 zz%H*()wyCpo2X;+p6HkoNhJG#q~yDl&qrPSVV0$~l43!PC25=!NkN9p*n5m53k_8k zMT@j(ZAP21S$V*3u?_h9V8*!TTQbyo*`FAP%FA~d z#|R`bJQt1;!5ALa^0PRDGW-K{Wyo(>*1&BcgTY7!VNzQ@;v)o&&onf_*GXKP`Ub8+ zA{qnG@O^Ihk{aOj5pKTsAt-p{RBQ<|;A=-JUTl$-+YmdW~LB7v$XNRIQoel9&5^>gH*&`i~9hXA0qOQDpb zjEuSve^;C~Vg^N|QDjYdx)vGVqw`A3|b7K$eu|_NDu&dH@U_sWLXNR8yfAu!~ z0@hL4%+Agny3$JscC6_h;#M8O6TwWby6TWPoWg#_cV5PG3sEuh=jITxZjztEe zo*lUV+Db=jlYzUI)l9OW!Zg%vjAE=_$vK2GZixOpo&WRG+fd!x*aq43H?7qSBM0X+ z*I6ziel_&{+0lm#KhP#&g}+_U;zH)sFR~bO^M#M4zD7uh%efeziP_;FdZqKJS}GEO zYQ7nzyX+88f&PJ9PHR}C$hxKgqpf{(@dbocI~Me>=CgBG0=12n|FTT0sI6j zuLdYnEC6ywbxhTsY}ARbllpYbIVj3|AkO2z!rG>t$}AU_k{yS;EA}<dU7+1N=smWal*ie)b_m0=%V+ z6q#KOH=fjG*`s$Y1_`9lj=_9tVpZMYvmd>Evbm4I1ASYa2Fq zT2&{L@8)IuHVJMT=tXj}tNDg7E zXaIyP?$uCE<+^tWL0X^3)A*G2X1Ge#Ns4}Ss66vM;q>mmpl|K`rv+U+X(xmT z0CW@oLvcum{}CE%&3V;f{^F%BK6a!(ob*SN1V8XGA^!>f>Rp4`_*n)1ME}i{DE~!W z008=L!P(f(*2&b?=?{A;%fY~61OC;a!I}I-um^bHHhyZd|4(~l|7V>LFpL1xU)%8z zAc7hA9bx?@+}B_m0pP#r^IvGO0PepC7kE{G?ym?aNCa!k3hrbjNBzG$ND(B0DFWLI z()^Y7JAz$h1v9e||DE=a?7IFt4I8W?gat+yqWmWn#_Bghqxsi){MSMLA?*Jh*=+w! n-~SxI-|LE-BO+K~{T6yReha-g|2yfohX;lT(IVRL{Q>_6o9k(;