From 08bcb3f4924334d4c66fe6ab92f3916661e1deb3 Mon Sep 17 00:00:00 2001 From: Juraj Borza Date: Sun, 24 May 2026 08:07:05 +0200 Subject: [PATCH] Refactor flag icon handling and update language code mappings for SuperTonic and Kokoro --- abogen/assets/flags/a.png | Bin 571 -> 0 bytes abogen/assets/flags/ae.png | Bin 0 -> 992 bytes abogen/assets/flags/b.png | Bin 786 -> 0 bytes abogen/assets/flags/bg.png | Bin 0 -> 877 bytes abogen/assets/flags/br.png | Bin 0 -> 1570 bytes abogen/assets/flags/cn.png | Bin 0 -> 1227 bytes abogen/assets/flags/cz.png | Bin 0 -> 1051 bytes abogen/assets/flags/de.png | Bin 0 -> 832 bytes abogen/assets/flags/dk.png | Bin 0 -> 1046 bytes abogen/assets/flags/e.png | Bin 521 -> 0 bytes abogen/assets/flags/ee.png | Bin 0 -> 868 bytes abogen/assets/flags/es.png | Bin 0 -> 808 bytes abogen/assets/flags/f.png | Bin 372 -> 0 bytes abogen/assets/flags/fi.png | Bin 0 -> 1102 bytes abogen/assets/flags/fr.png | Bin 0 -> 883 bytes abogen/assets/flags/gb.png | Bin 0 -> 1655 bytes abogen/assets/flags/gr.png | Bin 0 -> 1235 bytes abogen/assets/flags/h.png | Bin 465 -> 0 bytes abogen/assets/flags/hr.png | Bin 0 -> 1513 bytes abogen/assets/flags/hu.png | Bin 0 -> 885 bytes abogen/assets/flags/i.png | Bin 381 -> 0 bytes abogen/assets/flags/id.png | Bin 0 -> 855 bytes abogen/assets/flags/in.png | Bin 0 -> 1278 bytes abogen/assets/flags/it.png | Bin 0 -> 917 bytes abogen/assets/flags/j.png | Bin 441 -> 0 bytes abogen/assets/flags/jp.png | Bin 0 -> 1233 bytes abogen/assets/flags/kr.png | Bin 0 -> 1574 bytes abogen/assets/flags/lt.png | Bin 0 -> 856 bytes abogen/assets/flags/lv.png | Bin 0 -> 837 bytes abogen/assets/flags/na.png | Bin 0 -> 1196 bytes abogen/assets/flags/nl.png | Bin 0 -> 875 bytes abogen/assets/flags/p.png | Bin 617 -> 0 bytes abogen/assets/flags/pl.png | Bin 0 -> 843 bytes abogen/assets/flags/pt.png | Bin 0 -> 1210 bytes abogen/assets/flags/ro.png | Bin 0 -> 875 bytes abogen/assets/flags/ru.png | Bin 0 -> 891 bytes abogen/assets/flags/se.png | Bin 0 -> 1060 bytes abogen/assets/flags/si.png | Bin 0 -> 1166 bytes abogen/assets/flags/sk.png | Bin 0 -> 1299 bytes abogen/assets/flags/tr.png | Bin 0 -> 1125 bytes abogen/assets/flags/ua.png | Bin 0 -> 851 bytes abogen/assets/flags/us.png | Bin 0 -> 1331 bytes abogen/assets/flags/vn.png | Bin 0 -> 1076 bytes abogen/assets/flags/z.png | Bin 431 -> 0 bytes abogen/constants.py | 51 +++++++++++++++++++++++++++++++ abogen/pyqt/gui.py | 10 ++++-- abogen/pyqt/voice_formula_gui.py | 7 +++-- 47 files changed, 64 insertions(+), 4 deletions(-) delete mode 100644 abogen/assets/flags/a.png create mode 100644 abogen/assets/flags/ae.png delete mode 100644 abogen/assets/flags/b.png create mode 100644 abogen/assets/flags/bg.png create mode 100644 abogen/assets/flags/br.png create mode 100644 abogen/assets/flags/cn.png create mode 100644 abogen/assets/flags/cz.png create mode 100644 abogen/assets/flags/de.png create mode 100644 abogen/assets/flags/dk.png delete mode 100644 abogen/assets/flags/e.png create mode 100644 abogen/assets/flags/ee.png create mode 100644 abogen/assets/flags/es.png delete mode 100644 abogen/assets/flags/f.png create mode 100644 abogen/assets/flags/fi.png create mode 100644 abogen/assets/flags/fr.png create mode 100644 abogen/assets/flags/gb.png create mode 100644 abogen/assets/flags/gr.png delete mode 100644 abogen/assets/flags/h.png create mode 100644 abogen/assets/flags/hr.png create mode 100644 abogen/assets/flags/hu.png delete mode 100644 abogen/assets/flags/i.png create mode 100644 abogen/assets/flags/id.png create mode 100644 abogen/assets/flags/in.png create mode 100644 abogen/assets/flags/it.png delete mode 100644 abogen/assets/flags/j.png create mode 100644 abogen/assets/flags/jp.png create mode 100644 abogen/assets/flags/kr.png create mode 100644 abogen/assets/flags/lt.png create mode 100644 abogen/assets/flags/lv.png create mode 100644 abogen/assets/flags/na.png create mode 100644 abogen/assets/flags/nl.png delete mode 100644 abogen/assets/flags/p.png create mode 100644 abogen/assets/flags/pl.png create mode 100644 abogen/assets/flags/pt.png create mode 100644 abogen/assets/flags/ro.png create mode 100644 abogen/assets/flags/ru.png create mode 100644 abogen/assets/flags/se.png create mode 100644 abogen/assets/flags/si.png create mode 100644 abogen/assets/flags/sk.png create mode 100644 abogen/assets/flags/tr.png create mode 100644 abogen/assets/flags/ua.png create mode 100644 abogen/assets/flags/us.png create mode 100644 abogen/assets/flags/vn.png delete mode 100644 abogen/assets/flags/z.png diff --git a/abogen/assets/flags/a.png b/abogen/assets/flags/a.png deleted file mode 100644 index f770fcfff221beaa6793b6b32caadebf7a96ceb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 571 zcmV-B0>u4^P)MdwD|8i`OT_lb*zAMr9fG&s2ua!d)hlY}ckh^; z5A6cBF8}0Y7V_WNn3XKUYdg!f67X#!fUvL|JGo~;BEhdllT6|MSDf>1Y=kbp<|rE6<@!f zW73?fuh7H17Ec_Y1Q8U!e)sX-|NsA4Ff6bQ+8RzM%)`)V^dN!LG-byW;ccf z_5oXef;5qWzu*X>&rW7PF)RRi3#XUglZfAaxP@WChnZ7*aC!Lysd(np9t;aW1sCpA zVMY=LnT27&|NsBl-n{#GhtlAA{qEzvTmS#FGhhR+PaX56GV1V!^9due{&SnzE5#u*{yi0i>2_ zgHe1Fs>Sx%#WW05wtRLnz4zJK^cxsEncjnlnT3MXkY)Ig0RSvjwUx;I93}t&002ov JPDHLkV1m307Zm^i diff --git a/abogen/assets/flags/ae.png b/abogen/assets/flags/ae.png new file mode 100644 index 0000000000000000000000000000000000000000..64f87c67e0f96fdc6ae0d91fb3bef2ef2f442982 GIT binary patch literal 992 zcmV<610Vc}P)3U=3x&}t@`y!Y-E1u zZUPWc0oYWCPeha?TWe_wvfq@=$(KHU^i6Nv)0G8#!}zR@ z9E|AZ64E&V45`hX5q_E;0Yk~WxZNP=RD?kk7~8UkXP%!wH90wHvart-M(;+Feg|^E z`m+L65+2~^w|D0P@G+5erfqU9(&FCtrq2HmcyMdeBW21RtDsfDba{o?Zh(>pAj8lk zrHv|K-?g>o8w96hE*#y1B>7f>N=JI}X(F`PsBXj6+>$GQouI`1+Xo*G zB(+b6kiHmnH$)c^q)aeaxeHJ3JqlASfY!D1GYW*P71+1Rvw31o$mMU_z({ zAoBxcQP41yXu@l7U+S~*76g#KzLsj5hl^B0G*i~qT7S{**aN+TX;EZlT-gXeGnhXyQ@5}DZ$*wbH%5$r5*;C;_Uy;O7_M*$RT&-WUHi)#K2hxX&F)98viAM-}C(#KHjrQPh`fu7asX~QmD!vQU#x|GW(qXh{zlr+!}@!f6Rzj!lKuQO8V z-4bXK4K-Ih*1~TGCDM4A4BSrW5hf@K5A#|~}Qq{S)q@;MM+C+;y z&qGGU&l6#HMRjky5P_x5`(-_u`mx;gz{8aiG4AM*2>>Y0A&5WkL0l;zuo_||+TO~5 zD2kXxlH>r(C#bCi<37PT=U*9G|K^+GkLi5)JZRL9iNWA60647{o^~l5o)sGIxx?l< zX64n(p^ZPmB8P98-)9N14FFT(!h&D8ZC3C}m(#lm|0stbVr{lXnj2k_mZtuwwT0QN zkw%LnScQ7C1lY#7NK>Oz4U2u{5a0&NI#5$qLojM~9&F-&6RhSC2+r+B(GCI~;bWYFw=ao$q~I zQ)$vbckF0fXN5#|q%4zd2uMWDkjP#*EcpblL%bIAtxWugl3K5NLidgQ0eh-}ik4$O QZU6uP07*qoM6N<$f*(Y2q5uE@ diff --git a/abogen/assets/flags/bg.png b/abogen/assets/flags/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6c79a4244723d813bd34ca8090496d322602a3c5 GIT binary patch literal 877 zcmV-z1CsoSP)XrNC)_(_Knp$I6_f~YJc zOcAOyAq_fDJ=&{o0B2*a>y^E^)h{E+AQXRTIiWmx2iz+hl&YwMjTioT5F z_*9yvu+|QYNzu0zZM1KU;Ur0rW!XPjmVGcYGxPO9k->!O#pdSbl_W{Nu-2-_R_6~$ zk3wI}g<%-fYBi*3dTn}o`g)&JXh6QRvvav#uP>El>78@xEKHxTS++3u^Y)=MkZ@;m$aH;uUd z?%r3QA$Pj=Hi?z19*V%bJ z_j^Z*67y$41$M_3`-A9HW}4qMGOPuE=oCB-L?1(1-G6du z=`Qy-&^Q)C`r{#n2!X>r`nKJkKe@;EL!sF9(sOJb28n|dkDK&HMfMlkOEJvl$MBAT zV;vO&xF*`Ht)yQV)U>FstmoQY9*__u0_m24f9+hk{($x9m@n2I zLF7tZh>So#UaM}zuQvi83vns9s^rUhpJ>dhngIL?PG4(+KkY(b;VnRFK>uUYI0gp| z5cc41oWbQ>mcVz;sB7b1^{Rrk}13a-02Uo4Ua^Ud&-78qpV>#anz zzlzyc1ay%>=RME{5ciXrGh|&r_W*o9ht>PTa|iert`mxoz`#b>00000NkvXXu0mjf DHKC^y literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/br.png b/abogen/assets/flags/br.png new file mode 100644 index 0000000000000000000000000000000000000000..9cb11fb5cbb28dc3bd3b16e0cb72d5b6c11a0c31 GIT binary patch literal 1570 zcmV+-2Hp9IP)%-k_t+qn49rQ zVq)wgRY5)o(;7NaLPCPc%%o}>gnppZzR(HGlt)_%!_3f`xp&TEFSF0RGmIK{a_&9Z zd+q<;>%Z3euOs}|=sDbD`#1Mz{(X1f`cI|8R}tNS$|_VBsUW~4@J|sLFi!roXWPK5 z-oC75(<{AhA)Ys$ALVk{^!E0;dw+N9^ljOz(iqxwP}(ZCeYW?MqYVJQaTPoOk|&nH1U!wf9R^C{_kd zzEpA#5?8aWU&y$`X;ie$R_zb-xt)hLuCbc^U5qrjOl$nsDd{M}re(rsm&U|XMb2Eh zB9HE>jt^*PsdDl{NdG8YtU$@uJn`#d@`Rf;m@fo@%Qo49ZBF9UStG{Z%2V>0HrTve z=x9ypKXwB@A6Unkv9|o0tJ)@cxceox-E@kjrI5p;$}3|~uwV^jPBkn9#Vk(m4jj6{ zsH%5!HUlg0m22S3oq{dI{Ql_meDmo$z*B6%@lNBbO5XdS;S8pLmZ8 zZ#h;ho8slyz(w&=^gupDdN|a45lX%WOkFW6SuLwJ zUkhulj=4P1$jOWCURhXk)%z@Jn_~Fgh(jar&I~lzdAaaP=#@5>%-oWL-QTyquhUO2D0RCv$lg-(E_+ zpR*Z1jjQP$HZ;vy<{2liXrEPn-}7%P=ca_amq&RaJ~Ilhe4zQQqXppVOD8ZASF?&$ z^P@bHUbpvrWALoY+;?nXd>p-c(DXmY!cUL;4|abJq(?;7<5-DMsuNyC7*^FGajt*gjw3Jrzt5I`1JFp} URX1$V?EnA(07*qoM6N<$f=I3v%>V!Z literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/cn.png b/abogen/assets/flags/cn.png new file mode 100644 index 0000000000000000000000000000000000000000..18ee3094cdc55937461c3860ea06db84706579d9 GIT binary patch literal 1227 zcmV;+1T_1JP)a(ERb4$KooECND&5tc2}KC%#)TR%ilT`Vq8q`u$tD4V(SYE96HeeN z8A9-jy+`hSRozu>1P`xx@76u@`Oi7R3i=qL zhrs&pDwWNG-ml0uK}SIb6a@4V$drMvA^Nn!&&NE!f)Q|?`lR#FX84IpB|-NovLiwI z6lkJLk_L#8@UEk?pr0>bUcG_I6Dy4@8E9WjF!Fc-^HvcvG>0Qa1G8kjZGP1t0uh)J z5%btu9rw&8P95wt5(L_RoM3owiRewApC&E^iCT)gY01peV`EI5N0`MO*vQmNEuAWD z4tvnYb)@*H>Cqa1m&NiDuEKHZXb6*V7x22{v4x!yb*0fhMX!x!0g8 zwD^mHAW0TideI`{{aiMZ3vZbNxn-E@Lt0GGG6iLQ%;p|eIr7UX*8fPqS-ch(F=IZga4DIg2 zIoFvg4{ufEPTwz;hFU4!Sdj8vMQqKIY$_m$Vbzm;X>!<^; zU_egBVpN?v6AOKJ7pc8{iPI1K$=SWH0`(# zy%h@eYwXZN25$BVjd~-_y*tg^_ltq?{P;8rKh`lt@3QaOFhMXin;GTgap1F3=AScRc(l6Hf%tP<%DFo^r@x;FB??j;xez(?8Ce?e+~{9peB1002ovPDHLkV1k)XPdfkr literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/cz.png b/abogen/assets/flags/cz.png new file mode 100644 index 0000000000000000000000000000000000000000..310cc93b6c312563df70054fd1f805c067f34dad GIT binary patch literal 1051 zcmV+$1mydPP)r$^(J>JjAfg^sB~`65^Ma}tnfYpOZ|^O$S5+n=*~~{<*vFNT zCs|xvJe14jMv3TnCX+cJB8cM{_B1dvf*?qrwOZ{V5nZd->l6L`{WIGIS?3;C_5my{ zEuE@Vt4m3eXr)@!QmK?Qmz2w8Z7ylOuT(1PoYR$+mHVYq>Ft)17O%fq+Pk0Md_R{9 zFGCZQ?^hfXJR;gK-mKhU8#_p~T1|Z4?+L^3v*qRG$B5{BlT+E!V&uWe>!&{bZu#=r zFYk(nL_8*6u}-oZ(nv(Ub53ftTGHL!{gEj#&O)KUMnD~Je*aWV$uA1@V6CC2PdvdB z!w0e2NFWNNR{MaeirtN>t~%#l>g(&9HTfEIG^T#G7vh9-0Z&ft?_~V!ue)2ynvD~X_gPC7um+%Sr zon4T`&Ph-}px~^J$?1EKq(nqCm&;{DWY~x5F=(5s1)+a~7*ZwmBsJah>J@NttSWNU z%JdM#k?Gnshys`1I*3(a+qQM+RuI6B0P5^`+5+^X-aDK`Na1BYOkTZ*hyz@Fr3-Q7 zEYZ6LX-3MWjkcFu*iTo8^2cAGH2MP^1y+;T4}5^C0D5;);i)1CvKYBj#JRa?)a??j z)b>SBbq4e<*f)0Bmb@d2k@+I>zfYk~0fah1reK$)6le!^0PO$CAS!~G+9hw0&lQos z-6U56S+AJw?n})diW}^+eubp52KG#~?nJIezEd%@fh{+XNId@v$5XG}BIq^vS+WlK zzvK!{LNE#Ow}Wox=X4YYo_C&H?E!fKB|%mmogC_es76{-ALj^IAJ@^;t8+e*_t?+y z$b3=rw+qr}Lx|O`m9Nc_ErHS+NmBq0 z!Kjn2InNs#NM=7#O=n~JecM0%h2ZcJI2}_YuVf(JsKBqE}3g#8PH zZsynKR8PrUw(S>{PG;LLWCvf=2q#JOr~uE9YGyqG)d~8CGTlJnO%2p%e{A<{;UC61 VKME^hvf=;$002ovPDHLkV1mm!1ZV&N literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/de.png b/abogen/assets/flags/de.png new file mode 100644 index 0000000000000000000000000000000000000000..f7521cdef9f09febcb8c47b794a947b1468d1b48 GIT binary patch literal 832 zcmV-G1Hb%pQOy2iG!50PRtk`jWc>MJw5I6FIg zb8V2OjMhPtBp1B*Qvfz+S(aH-vb5G(F)Yr5P0MyzL?)9YxfZx8l}hv}40UX5?6h<4 zmIm3YK|4Y4GZArlo}ZnYo0|+Zp#l87T;8@M@{r`Psu>AsCZGc_)Cn3T1B<;`cHmyE zHt)mvt{%Bka(*OD)0|F1CwwTx%yRGD;A@Ak3^>K}Tlekxt7H$%$;MWfw0Bm=AYm}P z*_7s=`ExIpzTBX0a2cu$3eXi;KcrM=e#(2r(Qr`6Ubp-fLW6tbVGm$u3XR3?7C8V( zn_aS901k)#>LPhWE7b#?_Ik$mgM~DQ&~-eA z3Iu6tIfi;1meV`3rFz^$LHvmc9ZZjja1fa)$Peo-GldgkIbA}XUt4BjI913`etjaQ z7f=$y(?HXeS3v&v(&)Rvh215Vr+>GfPr8_Ivx<<{)#k^qVaR`jw+dvI#W$A!(ZgY^ z5h1l60}gnVe#<@8tAP`^zA}PBZG?o{BGKP81JBOP)~1TIXl=+ zUYNGkshO_0e=@!wjwb;ehT0C011AnjIZG^yrYEAe=7nD*^3XPGaZMREUUm^-HOD31AP%T{sPI$B^Ls0yp2^V1&3wzR07mlmma< zl@L-$Aixq4VE_o460%Ms67Oq)rdn%}%mA!bWWMmkUL$hOK}55wo(&@Ihu#SQbr6CL z{*zYJm^co2^khrvCOs>BLo7mDhe@~viG1$8k4UrAY@UPVq*AZ>pHiNI2e(8RZb8jkZzjA z3;`r=L;M}U>w({b0Z?6B?QZX;U z!N}q-8?%T0N@7RMrvI8G9l+(@Qn3I;Q6A2HfU=k2ze-*D9`27ngN;A?`YwAJ39@!u zbL>5e&m4l;^Kf?5nY{vceKC(@YZB$@GnCln)02M`VfJ^BC4qZM9(m|<*zrdJ5hT;! zBcA>egyAhESz|3^i4Hd{7a#b^r2YU=$g`Z4X#|Sa8!eSfAX5i%9SDOBsEtU7LPWDn zfiEQDV&jG2gTM!5t0$R4WzjS3sebU%s!YUpou_ZOkzTtF(05gkCVkVe*bW5Zt6=h= zA4lEXm8>;TWIl*VR-!yN+cqMASP-=l+L6VSik-FVMt8oI5}zu-Xj4#ewqqn{i!Ot? z%Y0^Ux_EU4FjlQ(Ga)Q|vB1q;HQ}iwt0XuPG1~73Ij#ekUndGDK&^os^a6&c@ zdJ||YES~+_@EZ(S87h{ov6e(6h-}RGx*STZ4%EShiQ-jDZ;hjMW^ITmuXgAhxsgd8 z^>gP}&^@$TDb9pAX;(`XF4}0*`>y)}h*XY1lCF?kN{xN8>E=Hb$;o?tVAEHH4t{Bn@T3R~LuGf#H?e^gS(_oQO?mZ=rn+a literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/e.png b/abogen/assets/flags/e.png deleted file mode 100644 index 693cf2a8f10cdbd63aac2bc64862a532c99e8c19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 521 zcmV+k0`~ohP)FQ4~I@H$#f?vo%E)n)_0stYo2Bk$)o=HcB>@ zR(7)UTOx_%Co_nlY=jv<3&P3<_YR{JQC5rveY$uX9y9YEic{a_op-?&f&RH6-G8 zF&2-j5sgXcb?_jQ*Gmc5>`%i~SsYed@~}11iJgf|TzYJgbP&`l5R}QYVLLWjbJ1O& zg7)G9Y>&-jyQ2_d$R0rl*1JzfbTMwn?mz)trEzF4%Exk*4F`k8I3Kf{9?{E^k3FgI zPGn=DF$1nPCsvxW;G4|BktfyUk~b9Rw_Q`OQvLfs+K)?x7E%>Wh+QXzDc8M5loa8} zwHDGuq>F_les#JsG7{1bIU}b~X__jA{&9=AVgYNKqvnGrZvk00000 LNkvXXu0mjf^{(8E diff --git a/abogen/assets/flags/ee.png b/abogen/assets/flags/ee.png new file mode 100644 index 0000000000000000000000000000000000000000..c52311d97d74407ce0cda28083db67d29f7661e6 GIT binary patch literal 868 zcmV-q1DpJbP)GX1+I`CG5rG zEr;ftKCI8K9*2w1LGcm@&qDPuK(^Bc;ST`!K-DU4FZ{aCcZguUgXLw$%8Fp&i=*J= zT>!7cB~JhfhzC@LUJQ^MJgZ&-qC24K1Kd7)e<#L%0yQte!dDmJqK^>Oj-cvVUBxqeX7M}b1Xku5qXJI~|G#rxqKlKK+jLx)io9$a%66$FN=N0Lth(G`F$ zQ2mu_&vjk?BiQ9o>oD5gSqFw4JS)`q679SYJ@wb;Z#d#f6|qwvO`82scJ7c@xe&2b zFEf*hF+WC-cxBbo5fL2|4YG_W%`UKneCZjJWGd+P{~&u@nm-ao(57)4=MhlVt`R&K z^cF;Qe5rI0LoI1l{ga(@_n0}9z-;4%#=4n<>T1s)Wg*=n_3BxCLMdN<=ZzS!w>JTs3zDgcOxpO~0%Wm&FfS$013|JvHxu`J7eBBIHD zzi;}D+FjzDGpQaHMR96=e*QOBRhpZd``vqgIZacFqR0ruG(5;{KF&GK^PENG9Sg3i zj%`C#xzT8R+HSY6q-pA+C^F(o|3h01Z7TCIX2bMvH#ECM(U u;Hb@(p;?!R9*D?y0GiX&(?9I>-NxT*?`%4G%M~X80000%L5k;7tR=|JjO@!r?yZam*$yy#u|oB13B5LhzS+Xa@u9QGj(?2l@fJW|Bd|sO zxQkz?v;N&^5PAO3tLMw;*O8wdmVty3&=;EbuRKAMy+8}UyvW*>0jA3ke3jan6#1ct zTMQt5CU$KO7Qj<9wD5Cv8sElziaT<5fBkK1Wq$;8u7|sV#_dmF7IOo%y)5rnH&<6w z1n)iREmcepbj%EMHFJEjp&iRTHDz5*CeD^QOTxI^;Ui7P!u)j?n)xW6o@j!hgD>|4~`jXl1z|taX-wf64xd5X<{-S!M zge*CHk|O1Jy0YSM?<6w{OXPbC>j-|!&?|Kse~y9=eaH8^E!YjJ?*XTPV?Y&TX5bSm mv}y2jg8Vp7M3rx)4jSMxmqL>$MCc+@l)fZ=xga%Hv*28i(Fh)Asi z0@l9^V0d%g!6IM>k1oJnK){UyFgpnt(a`zO>~Ql2Ff6~Fuv}!RH-IB`n%5v_9)K~L zi#m0PZVwo@8rPql$eFaSyAi;!pa_TX_%c&%%IlRW?zJgjtg3Z!<@II$nR*AqbKBtp Sdak1Y0000xG+q<}5=97_g9P*xe-6Q)fF%AMlz=&@ z=)sfhA~AwF$a+!}%t2(?MIl~9L3XEmW_D(JrvF}*R5P7QA6zy~kHyy{h-U z2DriI=jW~Q|CtvS?}H;3-#&lokDrr4CkTQt55v#|LC|WoT35p`Jlk%!9~kdvW_2T; zo}9=AL^K>X?|$ga%Im-W*?$VAroEgslxz(Q1{5M#mQ}NDdrm1eHyjRMX}8;#;yC^Q z5tm08G{)SBI9^y?Z9bPl`KQ^2e}Yo>z$9d{m`rYXyqAbLj$;}O2Beg#c%FCMb=@Ds zFgz(3lbNVV@Mg35TBTC{l9?Mx)XQZBQ1+m#<3zGD6`wN3@cR0C&df8e>wX#p!CMnS zP>;b|t=4hJaXw7bl*lR|w;bP2HVUlsJSWM_^SpCm7_K7XXHriA;ZCP>CjeX!Hn}lS z()xeJx|vBf5+O+v(prBMhT)ZZy}lys*%F0b&{E5Rj=YnM-*u?gCUmkZWu8XJ{h|)W|AzX zdj05GJv%e?I5-wNXiJI(ur4XEt<9z>%Y52~8Z%hCI6(#mT|zFa(h>dA7uWC6+CnBO z5QU>w2rK_Y09srKUtbI0uP}i)B~X*ix}!-81LTGdB0TY}fo-lh*a~2rMMeN}&t$s0 zQyRr7E*fvoX*)0P0el3apMUJOj<&2CvDrYi6u|dOZTNdFF6M{toq_xBa3RU4sMD^X zv1p7KP29bz9OrO0j2RIW6M$V(@Z|f;@ZB%Xg7*272jS(Tw?iCdpeKsIlMykO90yI7 zF6*^+vglRy+;EV|Jt(?pDp!zAv}BwTWWyZR2RT?bsj{q!5V`1JKgt)C<5&wx5=XYJ zQ6aDZ$k?iEQ22H;1jN=BCh;(_O8P71`~DIze^aSckQp{~e80v-#`8Skce!4zUK1@6 zxqdf_qONV*ikbEugqhj4ZH%I5h=^xJ=R^TjqtW<1%d%G;r-VvbOf03|GdPLtm&;|9 zW!dRkt@ax;TUw%w-h|KBf?&2<@y-FIzy!H;><%|#3u}31wbpuidK$Xj?t6_!_x+DY%!N=vYRj`Y z4uXhF0Pu`|;__VU-{I35>Cr5wyAYu)`-mvcvg~@2BtHPag75oRMp6L)1Zi>QPh{SkNiunFGIQ@a<-Ex#=}#)@e7yI#ym$D%d(XM|I}f-O z)AP}AczE{O-buv$N3M)I z2_OIb#dhF#P%4fE5V9;4afF~CCL#+J5$$GOg$OuEwT9yJ*=jn~;C*k9EM7Db0>ol@ z3;D5y*OiJNsL~kv9S;pkl=Ir1lW&5C?*pJ~2p)r@nkxB|5JX6spF1k7C^p0@!A? z0TCztbJq*wlP7>+L>e}FZ>lTrfp`JkYbR_k;-Ojr*SyD!z2m}(PbY)o7<{Tbnfa|C zP}G5_svcQ#6Z_c*J`Pu^!P1jY;{G9kRzM{Ra*_c(1ht}%6lA+gp$8olk3c=y#v2(s zKz%!MN)K7icjxDC#L&UB%%jQr-N8_-j;OXZ4s!%(Zr8n!4>cI_8lnP&*y45~B4*KLF!v%l zv#-DO!#oh>c5NbZW$JzQ>$BvF5hyYX@&B_XW(j7?TtgJC5Z<2fjq}!UrUA+A+8U1a zWBKIB9EFXShnL0?(5cT>%6kVyl}c2pR9GYKbs$&!yQ>Gr{jcw-4#@AmdTXJZI9R{- z^dEmW&#tuFKPE}CKK!eQ<2Y-zT0h5sEx&vH=;>z$s(1cvxe3oSqP8srlrjJS002ov JPDHLkV1oZ8rqTca literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/gb.png b/abogen/assets/flags/gb.png new file mode 100644 index 0000000000000000000000000000000000000000..19fec2575770d8ae35249b5220446bae6a5a38ab GIT binary patch literal 1655 zcmV--28j8IP)dR4*6+Zf@>xylqs;uH~n^p!sCUvW`O-rp@}_+_JN$gP`TdzuR4fpKrax zylc)7QFJWTWa>>Nz!@u0n7nPIl`hKtZuLu#+nJ7(@NLVuh~5)I4vI-R*32wLCmGWNJ})7f2bR!(+k5=sj6|&2*YUYb@J!{q+I3y6wC?i`KocR_ z3tSDs(|zB1D1Ob*=9gY;EsmU5R$lZQT^Lj_rjN`jTRb`MnwQrXju>JG7eWdZ3BfpH zjI+KhTr{&MIOp(uk}-reKXI}quC0CkXwmPNqI!j{LM!p=xd=*Fs2wda>*)%dAN?a_Z+;qE-aWw|S$BX=_gWc&t(Tdk za=Lfxt$vT12JMmC-pPxbJZ$+xHRSf)I5qD{WYdHtjl&S!+K+x2pxh9`d{WDRj@)JUJ>m@hgwn8HN!;B)E11Y&aIjjcaRhdv!Iw z+^`v0i;Dn#k$EsBS6y9D(}+5rKm?j3>ku~@?wM(A}7be+iUKE6buyQlHfQo z@`7MIGYS=!9IP}&%rMC|zb5aB89)vQ4u8)F@b~{a@^9Ue3+KK&K_)29Aq4AJa(@o{ zLWK^)UiKdhQ-p6z{BmY87$uu!ECj*-#`9DXTsp(RO~CjLM)?0sX3l-ElS?^BX&oU( z$o-HeZKk*^=D^?kA%cU4qkZe9Y}j|_0ilX0%ZZ}G_vODodd5IHbfsOl@<^I(k9IxR zd<-|v4Pip1k>PMaTING>ZqX_P2M_cCjLSpT^Hor1&O!{%M33g+o(Exx2!u$J<2cOq zgOB9{<<0MSC;?O-o8;NX%c zP_~alpX~y7ENDd}>=<+4?UozJAs(Zpn80`;TF!`ox0ynmyL*}F)5hd_~=M1 zo^~_ZOP_*h*nz`KpTKz%5Tv6*n`N44x2Ms1 zF-B%M%(*}3g*z8jUzOR^TD2oti{G@c&^z5JoZ$(Un*ISZd$wfI0R8&e!%8zQi(XiX zV?`A;56>C*%)k&cGntY|5-NxfPqLNUHZ`3oZMAAIbh-(a=9tE%iD;maUJ{-OSrakI zxi8XW>84{n35%8#Y+kcI8o!KD5~(dB$+SV8GH=3jUmg8yoNb2<6lzykac($mgp(>F zvnQ+=C#3_6yNwqv^xR#LpS>P#U?Lyj!#Dp`n9*rQC{ND#R|phf;v1ta@}~PboIpW1 z0zf>9UWcw1hHWP9VJeERYzlep z0EA)S*iRDUmkGWLXahJBczn>H*8?;!5HP3NIF5rj<;JF&fT=p+xz7}?)d6=Az}_o7I^=>8WDi2VvMW)^~RX zK(~{xoUG;=ST!xsY(%&#U<4jzW84%VW#tw;X_`-~-CwD#P=ZaWV3;uagvN%I410>B z;{qqo3j|%c$bknO-k!p4!j3x>{uhMjwm6FP!>Xk*2u=uXYOE#g@vVrqwKUMB^Mt7e zdOV=FE3@e>03e8Bc-_2Okw70=GTW19BV;04utZaCO-oT$B66V>+5Z;SfyF^YKCM4g zHS_mkX|PFcSpIFI{6giktVOLRH=%z~D1c@`q6p5*MGlUQfaNOmYErMv-xmt`bT)&4>!zMMrZ8q)s0aYV> zLvH`L6&c@NaNhlSB6>15eh-_(5QJE|Pi_QT?xi9}#o=H-?FX`QZN&2r&~GdERd<() z{t+Fsp{ycN+pJ3qwq=ebE6)3`C+WD_#S zbxxWy9M`9_mNaIV;~KLLxm7E-I4qxFo?36=ZF0*>C+FhR+X?Ll`_f<6H@Z^nR8l;` xY}Nqq+pI)H;(}rGeb~bBdsg+IUbwas{{T?~e?_ZIk=_6R002ovPDHLkV1nhpMdbhh literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/h.png b/abogen/assets/flags/h.png deleted file mode 100644 index 015ec29ca282a4038f85e95d4b171fc7158bc488..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmV;?0WSWDP)L^VB>jhkHrW^6Iu%+`^xsT7n)_@X+&pST z;4R6!Ubl;Qw9uU3jzaANp~D;BP>?pawRx!r9vJW5@A+--%LnkUg&oLX18z`1^n!T7_JpA83SP>T_c8%S`t4rd9% z(X|HW{^3nXqXx6Y03D_%!=VSTGAo6z=ac?EyfP~V4}dZDz!<|_UM!Z_ZVz4C_Ht+6 z+HDWOah%tn@Os@q)3neqEL2q^5W=(k0M4!ht=13?V}_;D0L$fp3*xl^fa3@F3<8*@ zwFQ_30vKZ-et>b%h*Z^Z|H3rqQARZW^^$FS>3((WC3i=?qWp5(--o-SUeN={HnVAg zl6R33OlE14m-F6>#+9p*)1-hSdhESq+Y+gy#0Dtj4nieEN>C&k15gEogK)rRTs2aR zv=c>|@?MA|zIc&J*8(Mv0wr&vLKruH=Czzcu6R$Z@IRw(`roYpl|@}v00000NkvXX Hu0mjfQnk%r diff --git a/abogen/assets/flags/hr.png b/abogen/assets/flags/hr.png new file mode 100644 index 0000000000000000000000000000000000000000..0712ad968b5a6c3aea7d833cad5940a47bdd1025 GIT binary patch literal 1513 zcmVWge(v4Kf!NSCd0vAm2w-@1j#@*oE`Zs+X4O5W~W z#`izHol4(QUi(BfJ|Hk*TaxmfDQ|~$_Svt6azSaf8w<`2~uoqLfg^Xkob$r8%Kz$=$KEHI+ ztxSwv8V;ssbaK3sOjRZ{-IvF;TB~X0#aDHdl3v`gU$3g_*=2X=nSoEH=dnGH=_m!Q zjQl~X^}0@78t>>m^Hc>Vp% z?D`?o2X}MBi8nCac`8HeC_VUH%0JypQmv*AE!0U7M6jxX^SIYq+p#{k)gt*E$+-(m z-1J!pS`40egZj4*GJXFpZur|VOsT-c&_?2aoJ9(GScH+96v;alEgna6E_9R{&CYEx z4`BqY2q_j)09y}IXXaD$9?L~AZHz%xQ>ApfE@-y!KD>e@7mq_eN9Cq-z;*pohH5+sv z+C$^X-%51J$$omqXC4Dmc#QSyr1ec;$F7pu|hR;7^U)4AyC zWR=A8=(cTkjs1z+Mqeef^TCw9(IbcW`_S#|U%rWHlf_G7)J?QG5{bCm=mVw99sV=B zH@wN_k)srP?jx)x81Xt3aPC;h<~S9t#S?Ln1Mr~rPwTjz`%b1PvS~bKM#5Z`Ydiu=0 zo0GGNTC2udlQlMub~b;r`J`^U$8(7ghE>=nmaiOr7_a*gtQ%KJ4B{>RtiH!mCyaPL zUKXOp4>)?~Zidyc&wa3*fCG0Ap1o^7adSJ!3|-xR+V841ZIbI?9amh-i{KZ1kS6V5 zM+ba31y5UQULiFyY#6!o=S0y)qQ=u$4e)aYFXMQ%u+2%Ixp(eE7B@#oTAyL$OF!v= z@0;(p>%;Ga*7;X(*K@aFxChK8(A7X;wwNu%oC97#+P~$Qt*>9FJG=e|N?Q6h8v@f* P00000NkvXXu0mjf(tYuv literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/hu.png b/abogen/assets/flags/hu.png new file mode 100644 index 0000000000000000000000000000000000000000..beeb302c5bba2634fe77c8219e97be3c7a5203b0 GIT binary patch literal 885 zcmV-*1B(2KP)<6r0FJk+{0zOa39szd{vZW)%6@gq8U_OJ+O=9t<{B#ovy-xbU z09uAY1NQF}d}9LFK3c0p)>}S)xClMzeN5ppKunkTj$r4p0W^ppsKL!l;_9(3C#6Te zi0uapkP9j3yaMS&;;uo!8Gr?-se!LdVClTiiI9}vMjw69)si0#WGwYs?~!~BT+o^8 zEJiyYYW#9J5D{L%18px?DH&B31rG@*qJ{}Bx^4?UrTpDg9i4&2HhGrcc$#SVwsMqTU0xibRFb*j`wFBGU zffBHxp%miXvb?!c`fADA?68{LJ33lNI^4_a&-g1Sh(xp0 z9yzi9o1drlO&P69l@(U>%=C93HyhbZ5E)}seYa<~qxwIF1DUF7R0vGFmcD!T(86iY zIXgS+R?}G_v?_3~eYX46Fy!$d4o2FE_0~D~BJN8)3HsU-@x%sM%QmcaZ=IQ5_@Gj$ zXti3+%W5^&p4@MoJ2d}cyXl^2H?l84CSe?C5cV~^0RErfBVDVVq;u_7_GCYKS9CqR zYgMV{P51iePd^68J`vdkhj9o>U9l#BUkNUVHM6H*`1Vr&*&hA@uYJ)W!dNh+W3x|Nk?*ceJY$cjH%;4DqU=I!fcSS(Vjvbb$Z*4R)+-d_jW-BM`sbE2EKnH=< zJolQ;YXF8Q4MHOik<|giO5^%FlWXt5bayF$V@f{uQRB-Dq|&!@l|D+P-;A<#dQ$b&$A}u0VETy=}A_+FhOp>|p-cQb(88b`^vCVw&{_Z{J`_4J{zH%bqxt zdcG6EV;QAM03~Py|2ZX)>gk0YLcS}LKe#dzn!LO(#rSJ{E5;LD$F5ko(shb12( zI*1W;ktWZ*>~G&RA_iZ+pHpUhKZ-{sH)sj625GP?PuhT7ObujuuYAc4SzfA}N>2IaYr0j0~S*zEd z^;_GfX@B*ez^e3-d0vz4?XABw0$0?zO0uHg<0aLlOtTc~+!a|}U7ZJTRaJ{vb)gCT zXd)!pbI!e>tyb#>$!{BthQxuwUJzpp&1Tbr{9$Tp>blxWlRVSubk?#gQ<9G?LXv5k zN~hD=6p_=GiN+YU-ERNky?-mub5S*ohZi9kMI;tQq2BuwGcz;4k#v@U5t_)S>+9<$ zi=uEzl9))%>_qC9<@%G@s}Bdn8}1*X#8V0=)M&U)h;f znx=5h8F5cUz7HXsnVXyYWe~YFy2|*zEjbji_vPi~!>YOf;0S<&0E&Ulma5*0G5!SL h>)F}atK+^y{0mI>hlxb3Z`1$)002ovPDHLkV1mZApnU)U literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/in.png b/abogen/assets/flags/in.png new file mode 100644 index 0000000000000000000000000000000000000000..a21747ba05d31af14baf28ca313212de20ac29dd GIT binary patch literal 1278 zcmVnqQo~5NH8Ki7{o{f5r0Tbu%bbt#sC^zmtZg?1R|oT zJ{b*SA8c%bKG5*Sk4764L=+(y8U+e1g|_>1@5~%Cv)j_$669o)y?5@J?|kQ*bIuSd zj5{D{C5(Umym=06yc||60dXt94c>_`2#8Z4bc5+zYP;Oy{TYG?c03-Hfu|uT1Iz7` zS^;bV+vTXDT3Ch;$>Vk@_fJ5?BOvMm)OKp?J3fjrA;4&KZlAmc!t6u>laOb?jyY2W zq2fA0AS58hRT$n#ZCBdI2ca_NpESOWkaoa$#u|XE%<=~2@-h%m2ms_MP3s1>I>I0@ z6~TqopEkcJL;VF}wk0XV{{UB-W6Vg9M66z+wSDc}VI?txumdxZO8f*t^)Md(2H@;u zEUMyjx?y70=L}?VH9wCw;kY6KN1aRG4HCJAc-R<0kX*UTGL$5UpcvQ23~elgC=Wt_ zU}mFgR4R_Dw*UuLQh$H{Yyoprs4%5<45A{xG2RT+h7wnE8h>5L`S+PqLp0U|7|NMa zHf4!I2+7t)1ra6}C}w^-tf{NbX0w(^lu6^jk_mzRKVC-W>$5m>so)W2G$pX*nLF^@ z{AT0|wmb*{+GpX$SNg-SYoX!8z;yQUFH;eEzhg-Dbz?{>i&thJT(f*oHy1h(Z|DF^#Yb3YFIaaAsa!x`nKKeCg?{hO# zL^LRbXd0gdfl!Do?wS%}W=j$uclF}+Wz&(WmVSNF1C7|#)r*!X)tGf#5{1}+DofVY zKXcAya4HA_cOcgXlp8IE(Ug+d_~djTw)pMb2qvWhG}i|>d2R&AX>43J9aHNSB3(Rz zvCOUIAaHX7XOuCfTL>|?tc2VU5`^KL#p-#@zM|gWe-`HlBCpTnx&R-ozZWk(G7ZCd z<9*BNgOySgMNu~m3=GTx_(-4_FFQ49qw7tu|oRROLLksl(Fl- zeDu8_8Dw;1oh+Je@xpP0gdiD&3Q^X4xaawUo73!wXV|f12cAx+#hw=qZPhufBf?N3 zsg%>oF=N--6Hxunx>HUh14)9iaW;O_gQtt&&aI4{|B%Vp4PPyO5CZR5@DnPKp&J9n z)#|uQUrGW=0bMXLfxb7y+xD*R{<(xPHaRDxUrNn4-G+USKg2d#NkorX;2wa(VgSku o&}qv!B&F=wz3PXn+a07*qoM6N<$f*sXQH2?qr literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/it.png b/abogen/assets/flags/it.png new file mode 100644 index 0000000000000000000000000000000000000000..93d02795154d24c13e6c00c6aedbbfefd401cb75 GIT binary patch literal 917 zcmV;G18V$=t2~wc7oKOolVSpGp0%2%e;5bk^3gorfDT@Gav8G+;^G#efNInymJQF zgwfei(;I(se&W%E#jBI8R_og^3>Tv)%EB;oi;I33eHYHpPyIPI{#ft#3h-t=yYZo3 zuXE!-!;Q~8H@M>3Z?)V%Bb9P>haro#P681H5y7w-D3pqOxK!HH{^PIlIXv)%4BY=N zwSKtdMF@~v1nLTIP(xmu+4r*A^utoAxCB-maBJPqm2tz@>iYcTe7fUzr1RA1;MnG(}IllMR%vkdQqK0jxN9%oX#XalZ^^X6>r`JF%jt$+e@ zGRC6V=jHlCeI4YpOQCyxf+dE&?mfk% zv06+Kpn17|f8>0V933?UlSf1Ko00m;j?Z#cdme{|^UDHrQ2%(N6#3f9*TRTWX+ zpf!@|84mX$3>~BfAEn$00000NkvXXu0mjf%&x}* literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/j.png b/abogen/assets/flags/j.png deleted file mode 100644 index ad5569e2dda699487c537899dcd2e8a795635767..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 441 zcmV;q0Y?6bP)OCRxrW6=9iLggRwepu&0f!Yyw_KL0;IOC}%#TdcG!}aD z7pM0=MUI=5-Wv&|dSwTnyXD)3_qUkB{U!}9>q`Yqn`Y63B}ov^7oh@HxI@aol=6R<8U3MyCZO1#z{(X5Y!AXf^Ox?mo;~26E5fL26N!QiY)lez*aTG;w%+AjKFezjtV0h7LwVo@L zN^jR{wPqNGNRnj8tc2FsnPp>H7S(DstgNi`;y8XW2!fMEA!-8rg=)3>R+1#5aU$;v zptq!4khX2xc3l@?7#?Xho5ym@)SoGMx7*$0y6&ksj*Zq@)TIfe?8|J)zHvc@h}iQy zD-6TEVu{341gOQu#d`pJLqzpBj(H56bKp`5s^nxxaSZeaHwh9U5*ub-PLkx|AP9a; z&CpsO_IoOZ zolfTgrPNoJW!1#@BcB_Fa!cT)5X;9;B07B*`dSBIz`Csg_o;2D9@+~E>fopk(3&Np zG&A>!=rLmEos~+(Pm)AjlW{RaIX28vh~Dl42;X@R$)DF#aG_+Oh4B3k(A)VuO#AQ5 zb;J0GZpKI~%Ep-8L_|_VYqvw~Jr~PwowBHAHh~K~w{@UIUOt_BsKPkN$_}kX*hBl-;5b$}u+z zXnk0rBkfBLlHcZGu6F=q13Xs!YYAX%m|hS1^3}{u1xMs{=!t+^7gE9G{~{g+=N2Ss z+LNAAI7#!|-f#z~ISo((Ow?RTk`JUoQ&X_-z7sr%Co@TwReAY~<2VwK%nx$WAHdph zJIc>&g)yNtobk$)y=}voCAiz4fW2`&AgMY^LS`vA09QzBeV(WwItP&4t{&b8cgv&T zxCL-ByaZUo#4Wg+x1jp!{;aacTL;^=E$eyJ?RGZdJqIJ$()hv zn?`1*)7j@Z&T-H4*2&1!T8lNsaXA8(MVguK`!X_Dk|a4aJw5&IaGH$?C<<9vSlH~k z?qO!$Ua3?nGT~(C=jERkk>t5$SpqyzN`0cWer;xE=DU&RnSh(yL~&rZ+wF&l=ve?; v0o*ISCFhBV=vQORX8=wIL2z;M?U4QfrI(l=0(`{Y00000NkvXXu0mjfwU$~` literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/kr.png b/abogen/assets/flags/kr.png new file mode 100644 index 0000000000000000000000000000000000000000..302889266c509b0d0bc483eb134a7a13cd5ecaef GIT binary patch literal 1574 zcmV+>2HE+EP)H zOcdg=!jHVc<;$1nnx^@NuIo>EJRVC3fowJldeh*X!!Qi>PN&o3LWu8DsZ?V{MMdA# zAU6W!7p`8t`kcq(*=<=?*|lre2v{(t%ovTE=4wFKbzWRtjPddD(R4cf`plU#KP?Qx z3&F$T@N1T3H5-Oe*3r@7WV2am7zWwUdf{nl&Iz2NkgaXo0n4)XMt0UVEgy)*IQd#g=w0uWm#L} z@%T%G+0xR&>B3kf61m4Pj9*OC4D8vnN1i=bg2&Yb+!lq4|P+3{2_(tvyz&L~y z7#bSFwr$%`U0sc(OPAupg$tslrUs^IPE1TpJThz6tbW?PWQ@ICQc_aV-Q6wDoja$% zJ3Bj-V^dQT`g+g9JIx2_H6gtoc&2&r*Pnl4$M)^0t*uqICr_Tlkt0WVPfw5Z`~7}h z*WXcliO1vf7-K!0^XZP`fN0sZYnK8)cI+6cmn^~hhF4)n;t)fZh#zS8R)Ccj<9O?j zxNG)Z=T&+`8C1@%g2&@g zzI4GwMMccE?ej!YOw+W|yoe}6C?kpU%t#W+#m~YC4S;FWAzdYKFs?z0321lDMxgsk zcxIL%Gd=;4^UaBduu?jJKps55K-rRZvdH{Bj4Q*}AkA`G0Q7vSGJs77uBKpwEQ(<${JFGK7QBv{KYpH^6nobxFz_LRN0{`L(|s4+{q=u>S)A&>3T+ zobwsCP{bK@-9*K#Y4F`yj*FKj0IvqPxf5s%$hZjJ=EdwgENFTWIJY6Cm`YKa_Vt%x z801OvzOGs!@aylr2+r_fOKlKv9UwIcCLHz99FtkR`D8h64;10o-+JLVHx*CWLd6ik z-`sWGpE&1?PC)V}EesA0V#l_v_;}xEShs8rKG|?T<^+9UOqC_veVZ2_uD=hj)K#MW zco(+5{~ki2kn$xA3P8aC{6uN`Ab>NRb00;|3vK1fl{k9z8?0Ed0vldlhkv8v2wh35 z9nKB<5G*m#e*84b%gb@`;y-9^Zbm~xgA!V<+D>Ykwpj5Mi9|l9f7;vIoz<&X%Yz3G z%D%on+1%VLYnCmOCr)js)kE|Ae^er9=LZfPpsJ#JNGuk6CC8JdGAbV=91d@xAY)@=bkuA-9v8XVas#|D z2-U8Ukr6?*;c!@zZ!{X+o^N7`qNy!28jY?uO>?K;@3)f4BxMG*%))kgOV89ajRyh& zYMCk9w%;l%EBh#iMQq-X<}E?O;qZgHuD{JWU*+|By{_x3B9`xJ6pQklQZkiFO$s4? z$Y!(KgTdgr92<1I%J_fkE^OGbSnMIr`O^TN0B|4GmYhw7b3Q19I0oQwX=&-1slNH~ YAAx6nP)B$FRP{{WFBOqwZ z+%D7oqjM+0Ud7}*a15BnU4Si+4UoH#-;wzr9wfeBRgr79S5Nkd_Xz&m(i|1J1iVf) zOyUk52lFmb1u_8zo>~*}Z^-RaIdN}o(8#Uih|M|5k(Sj?`fksP46P-pP~R} z7!No6_p?`$mS0r|k=?LtE?uA+Zjzg&P{hr{z}*Pq)Iwmpd|T#MZlruhZyv9ney&li z{6vsxa&yrk#d~naQf{2>qFuaLJ#lX>3i(t$yR1{$j232^b>$DTG@x3VYa=v{)WQeJ z`_*609G_DCQG!gw(4=%80v<1t0@iMp`cn4Qx-N%mXmr|z2@(@?C`byGd!?4uigxj4 z);2$%mF`8%E2DwORYXlWm#N4+g~eJNl|C9HQCh6++00?4|ACGQzI$QpK;<|LRNNn@ z;Eebb(v@tfE1O!;*dzCK!Nb5Emx{)A^@oPs?`kan*fCT3N3d`YKf=_K|ivo|LQ7q+lcAw<%!R=l^zpqxa*HpQK1dGuNqpEk$k zPraJ*DBt0O$2yndX`E8dMl8sL3aoV2#e z>^n8WXLWRPo02kxH94?bAZ ztE=b^;e@y;CNChgu(sgeIr_;0>p$-m?{f#wn~cQ!4Q5|(WLc5326M5u#ODT26@Tc+ i_rUE1HtrAZ?c-m@nTscL0Wrird}tB8i8C8eMU{(y?0rP@Uo zf-YQHcR>+xq2i*@P^P#Mv6Y(1o4N1aQ|{!=I3%JrnFBL#=5g;i-*>)uzwZ&-a0zhF z0Wtr+*t+-OSl7n@JSFfjq}kyj@+N^R0=}ZhXN#fxL%uD*2&73qPX0L!*eZ}dnwdN7 zg5CslY(~6G0BR@`j5m33cn#DBz|ZCVJ14{X&m)c<0weVcHos&_?-%013MsEl6Kf{} zN?FhVD`6Ng{Tb-qSWef@O^R@m{Jb4{y%64uQue48;J7Wze?ZoW2KW|;p5gS1se7j3 z6i4JA+x*E=Iv(0<)^4{St@@RwD3FSxV881B$Ukn} z_}zJbFvhqyZ?+-VL@D*WQksn+AU`~#lR6D3#@tf&WlN?R_zrlQ-E_{~JynZ1{@V1h z8eAzl?MLbmq-hmdNx8^X)xYY$efp)#z8@BkJfIFZ2anR!Otxy>NtTXAw3|VY&KOOuL8VGr%NYdcdbcj$7{=NFdAXkbY*b# P00000NkvXXu0mjfLMD{~ literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/na.png b/abogen/assets/flags/na.png new file mode 100644 index 0000000000000000000000000000000000000000..83b8744bc285a03baa68a778f5971ee75f4273e5 GIT binary patch literal 1196 zcmV;d1XKHoP)7`BC=ZVt_&oI)};%O;W*3K5i)&S=lG=f3<-{O;qlX@%%fd?cvc8017tn~#R7~6Kt#9>!38M#%p%?&v_0Qv&bI-o3W#%ugGaz! zmkm5oeXv+nbncFzPYBztko}Yp7v4BeB9ww<&k>!d3;gK#t|J%sipUHD7sL3+083E9N<}Edo`K|II>1}8Y`!_VE zQj~gc4^Le0sd{~55~7>%vaTgg5+9AHj9&J1A7(xB8~-unp#E4X28J9Aq#clw9NgE~ zQZotbDyE~Seml;&8^Ppgh7yOMuIVc)mLs#H5>TcqN>m@65(MEX@$FRWqApqb%y*pc z_y_}qQzOfN4xxP+0q=J=!r~+d41w07Gnlq!WxBN4D13?m;}2iObJKnTM2swGyenJ~>Or2odZm;$dt<-qIpP{gExYQ_ zj3`7oFetwc6!6t_60k#XHUU-|BnlU=q<|noQ|)BDS$;S8pD0?h3Uix1)p@*KcI@A@ zaKUR&&gL-U3T-)KMIyQ8C#dWEB%HlG0k)IHF9QYmxVIRWuO`t@b5C#_>HZYk+cro@ zful%QTR9V%6(lfgy!+*BT)I|(v5t>CE5z=TC3t7)M64|@LQg~PgZ>+Q+b6C;kz!k- zAeu*1*73W59suO#j*C%0Ynfd{3@>{EJq_E?zy2QJOt9F37Hx1tEI?`)9v3j_A|M_@ zQ>}rQj23Pp$$-QL8a5Gb?D^&;M)Q(bmQliUPA1UxxbI(J`wMW zKk%-u@AuX&n6~(IeM{8uZc^$#-~x&4gr!1XA2{54c2QhFM5gz-TfaV6-!x9h7AD1` zfkTY;W)CULWIx-{(%WanDMaUYB5!Sq9@?1&w20QB4Dx@3YatQKRx0%A?T*&ozRF4{ z_RIjT%gZ?Penzny-};i_qSdRyxy_#316)KT0uvi)A|IQ(wtds;y5RP9=$j@p2v3pz zAR4z~=Id`X&e`e~95(QMt~N7T%Ayf)G0OrW0$T}%DAZ{Zs_Sh1w#C3bFTNgbxj4>o zT_(@dA~LJ{^wGMez3Uc+2$B}th{6#+3t(l;N#=dP;7-MA0tB`|_(C{y7wCTr&KNd>>0000< KMNUMnLSTYyNkR_* literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/nl.png b/abogen/assets/flags/nl.png new file mode 100644 index 0000000000000000000000000000000000000000..684116e738f3e482e64b1bedc84cf997fac8df65 GIT binary patch literal 875 zcmV-x1C;!UP)f=Z+YI}|ZRce)e>Erm=cC>C1XcTvyVz)AJ@4RYDr}~3PKlvy6(Az0-!jqv!IRPgFD*p$CKn0>$6is36HT!M8 z$4OZu|5SI)CbTmdX(6-}$!!V2jVaWvs=PjHOQ#No1WC%dd!Kw1H&=cTay$=Fw@zMw zfVpBOO?OZF)S;E1uS6ok)0jLuhG^mrEJ*FzY!8|Pz5*R>-n=shuqv0PUU@wK^ZIw{ ztEH5wLaL!G7?{{9CK8R{i(u@F%n;B$S>G!}O0~iT4A1?C%R76&^ zE2n75VGVTiZUqHblTwKyVqr0i0g_1)hY;7awVEv&5IVZ(^)nYJxUda_T2@1b>PKt7GdIn z@_V;#XVZ+53M>zMc6%L7BP15lyfslt=9dLj&YAvwdjC%}d&?wNqtZOhjM&mBeALV( zp*lxyoPG8(Upg4>69{S))Wvk>^EpN%b@~oKp92z3*3B;*(xA@4r4ZjZ&I{8=P@|$Q z45eToN3EuI@r8Nut8a+tZA7C{(cZziI9)atyZcQ9am9&fGqU!ZD9CFCc`*8KcEyLf z#nnrDa?_(QPSYi6vAZl^Z=vpe=L&)1+nK2QQrUSwzi{Bk9>;pWZIs`YR_xdEp)dA! zJgP={hGvfelJ>0HBJzuZU&l^9YoCAqn?c_-`~#E7$3vPfHckKl002ovPDHLkV1jYK Bok0Kq literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/p.png b/abogen/assets/flags/p.png deleted file mode 100644 index 8abf47f0730402c3148037d9384b9c1bd8d423db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 617 zcmV-v0+#)WP)pryJ{&2dMLK(*&YL- zhuA1y1o0X}lxk-4!!!|E+7f8N9$E~zX_H6~-9!kAl6dOjlW%pG>}EC_W7=91f4TGasV3WPr0r1IQx2JpV2LC3O-$98bXAe4w9Xte>GZ(WPkV zI(%$<7;tZ4J|KdDuHY&q@$tw^gX9(2oK7l2Ctl0Z)BEW zO3uJ|Fs}o@3z@|})6j&d!HJzU;!Ev5?Cfb!+&+W&n<}iV9>DZmQEy^QVxI>8lb!}d zp>4a?h^_Y#Sbcg3Po9?{zFviopT0ro=Q$+a)}WYsXgO<4gSCVWBD+5Ls#zOkQz26t z1HpTn!1Je2K6-6Ai{y}`#Muv#M8`PZog9Ti`I>o2Q;9|YZXX&dG0&l_D6cM&LRHZO z$!?>%rzvC>1tveRvbLK1vZnzCm;JeQPlJZ$__B^>h4iqtJkxYwwx_}67YmmNXI0V9 z6R~+CW^J;sJ0>iqqFYpy99SFhb4G>5O)of${X^JAJ#Gslmnd{?m?RAk64%DURCMyh z7H(BnS)A5yVLP)(1S2*e={b68zF*A&B~3agCK6jeL#sJLSPm_MBKY|AuR~mh+tfb zA|hGLv?idd!9~Vt?4;7&Q}yZ|xz*j7b_kA6`an^ys_r}I-E;4&Cpd;)uNStqwhA8) z27_k+ydom!&1^$NR!9oTp{m{_`HiZ6xw^V~!{bS+h}a^ZEI!Nw_V)IkYBrniiO8$< zdi@bIL!RgGyF*n`sZ`4Qcsx!;*Yf%Jix2^C3_B(+)% zX_{VMTU*liBlIJ=9FZrT~*M{W17~}KZZg;m#qbQ2^JDtvImSuKYa)-~&vW%@(tD~xy%XbF{ z2WLd&`w&9gy+6tG{{mk$$wO6rK}o*WXf!%8MlOTgVP;;7x|zL^C~@A3f|z#QazG&F zIcfHi4DR0fGpKfp!pf#yN(v}#f{~-d{CZI0zi*CMCAwH~AI`>>=nvE~upXc|qA*g`1 z5HJxNMG2QSxciAW(CpuEB(Ny5Q+fK?B-$l_FE^<52*R&7la6vuz(&b;^9_h?f-8YCbRO)VC5gE6=etWaTLqJ|a;h#NzqfFU6e7J#*i#)ZTL z2n5B2Xox~0tXN28sZkaRhHsD+P#%KiaYT<_j9j0?_FoO_FHoEs(Pcy$1JHE9ZamyZa$n49T}cQqiwU zcXzkx>FIH6_O!Pa$A=rHo+vI_`quSEREbbrRnGt+k~~Ye0gyv6@%uBlcv8U#!>a!} z=vGXR;NJMWeR*iYt*$B6-2CGJi#A<#Xrd^0=&Qf{EdY}vAdl^j(DiMc+jFNA9|Yan zofu#B*}SzuI<;4Y=Hg%!t3#!tY(`}3*U7#Gy-gf@_;LgvpQLq@H}0KyJ(Iv9J#OXR zdCSt7V5^Ot^Op$WNC^K+d}e}#G3rV<+kkoJ6w_CDC;O8i6j}F0`-3G7ju|6O);cv# zOjIvSK2xHz`)Vawk4FtraH-@egCI|~aQdV{(2|;s>1;UGM$QRhd~UuK$`Pp5itz-@ zn%S5#s#&DL;Wj5VSh;V(3{*O!f>kk+n8{nnDNLClWFGP{f%B-=1kA@F!2nJjJb!`d zv%=8X&L9&sMCCY%-a6=*22W3h@u@Vja1zDS5r4hg$H4amk{D{h(wyyn{GJcHL?+ zFFuEh%D6$OYfF|M#q@XaAc81v=|>R#$d213%&BahoCBt-NUV#bA{ zT+TyOQnHU{x%N>%H|DIsUg;xj$dPGFQ952CzG)GWnlSk|6beS+oCKmNqwY!xj$BZ3 z3+uUmQ#0n~aq8~7!jw-ZVaCAq4{uclOl^474?{&ShJy5pk=eerG65X^!`DNZ`)VW8 zmN(+NvixhrZ_BPRc&vz#J7?wp`v?&!d)u$?d*-oF&9@?Clko^rj-fFpwB3kk-*KJN zsR(P`sLnt&L2s%on7L-x(xWF-Ih3vsMUy6ndIS9mzx?jV|6E2b7(YNpH;-&C8MJ!1 zmD4{|x=75HaxuOgq>QhL^Ik%MOd3p3WrEtU3}G(?TtU#c{g&}uuw&WRXPk9wgV6Zy zR7Kq|qqxycQm^T&Q;(PuZ16PdDb#a;CQe>H`bjY#Zw}Kz5Clmk@hDCEz+;1$946?; zzBiMz+dbiQf%6clCmc_iJ74)`OR?Zy^CVT5O@*FGJY>~@eUDZD&I8y$7#ehN0Jml) z=QdU;)3af6HWTrb>Dg`P@*}(5pnIxVj=scdp&ny0m7_H*ew{|dzjILfoA{t2a~|RB zwjtv~+23pF literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/ro.png b/abogen/assets/flags/ro.png new file mode 100644 index 0000000000000000000000000000000000000000..62aea3fc99953fd2855281996af02d464541ee99 GIT binary patch literal 875 zcmV-x1C;!UP)9QMD|gZV`?00{bpxwGC1qi^!+2Nw{AG7 z{1drez?BIxM!q_|>d6O``}Z3u?PkZysbPpHk!J|G({c|QH3n)Vr`t_C`4fX@g@upT zi)c4{Y`tm6&QFG?a#1NipU9^Am23zkQEy$kEe(Z;h7+tpO|ex zGdzR_Q?R}GZgO|gYf1I)<@~>(xG!ztK5ZL4#%5G7kEC(I?i$p8g@dPsg#W6DT|>fZ zb`>512Hz->enHk+MUz5uH`o=ViM11w&y=aBegtMnE3zAHa>(}-=Ie7q-1@GtRHSr~ zPGbp8mBQtBOztTX**67$r#ocEU6_92XT;8+B|+48C}LsJ6-3)`Zit2Jbz&CAEEugP zOg;Sxoz?}Cz64bT&$hBBk#)o>qI=L}iTu5XnV*b-GYZyq&nshjF?eQAULuVP}tqLRjh#K}5!;Oyl`8;yLl+Gmg9 zaxlE5+ihC3ZILy1BCpEP)9T?g z(S;F&F2qIYQl(;pi^dSDpd~IsU^L0=%$vM>?~(gvrX9x^n^pl&$-|E?suPH z1PcobW`2I&g?X#hdI-P?5jpO?pAnHJNg=tRsw*Tfs_Iu06B9p$c#P@@$eM;KTa*`YV-6 z<)buBr?M=AwRR9J0k^`*Ffqnxnx<&C+kX{B@#f^@NUWmF~9*25{6!+-*E}+mkcCC9l65t4E zT zsQ6W@bQdLTJxKI(*zW+rQ0K(DOLFe;%SZ3oT>CC2YyE3;-#$rb1(9McX+Bw=%|CG8 z=LzB$H{qQCW`GxspCIo8H*EEMTKRY1JK_E&_}op$y%vTK(~3 z?Zw4VWPLchyzB%g6GEfjKhZ0RJq~Y3-yqZ)oI2LNvbX^DuIq4j3gCa%nRimkyIm3v z-Vzc5{;wvXO}zn39R?f1Gjm)%#hwei^~(e_h%D>u>lNaIgfgB58T1-tRH%P-Q2}j0 zkqg__nA01;?S6#5?m!y+s3+)-F}n&2}DHE|$pC|^G=EQ%m75Ol;BD)P10=>1uH z^~XNPpe6pD{y-$mS8B75VjJ`De999K3YhdIauNOll}n7xmoxd&x1(zZ_#2xE#<^Yu R&zk@M002ovPDHLkV1gI?s6_w( literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/se.png b/abogen/assets/flags/se.png new file mode 100644 index 0000000000000000000000000000000000000000..447e74b783983b42ffafe9ec42e1405e7b6145cc GIT binary patch literal 1060 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 literal 0 HcmV?d00001 diff --git a/abogen/assets/flags/ua.png b/abogen/assets/flags/ua.png new file mode 100644 index 0000000000000000000000000000000000000000..77b4ac88a2f717fa16a408b4a1fb32c374a2a3c2 GIT binary patch literal 851 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 United States + "b": "gb", # British English -> United Kingdom + "e": "es", # Spanish -> Spain + "f": "fr", # French -> France + "h": "in", # Hindi -> India + "i": "it", # Italian -> Italy + "j": "jp", # Japanese -> Japan + "p": "br", # Brazilian Portuguese -> Brazil + "z": "cn", # Mandarin Chinese -> China +} + +# Mapping from SuperTonic ISO 639-1 language codes to ISO 3166-1 alpha-2 country codes +# Used for loading flag icons in the SuperTonic language picker +SUPERTONIC_LANG_TO_COUNTRY = { + "en": "gb", + "ko": "kr", + "ja": "jp", + "ar": "ae", + "bg": "bg", + "cs": "cz", + "da": "dk", + "de": "de", + "el": "gr", + "es": "es", + "et": "ee", + "fi": "fi", + "fr": "fr", + "hi": "in", + "hr": "hr", + "hu": "hu", + "id": "id", + "it": "it", + "lt": "lt", + "lv": "lv", + "nl": "nl", + "pl": "pl", + "pt": "pt", + "ro": "ro", + "ru": "ru", + "sk": "sk", + "sl": "si", + "sv": "se", + "tr": "tr", + "uk": "ua", + "vi": "vn", + "na": "na", +} + # Supported sound formats SUPPORTED_SOUND_FORMATS = [ "wav", diff --git a/abogen/pyqt/gui.py b/abogen/pyqt/gui.py index 3ee53b0..578e8b0 100644 --- a/abogen/pyqt/gui.py +++ b/abogen/pyqt/gui.py @@ -84,6 +84,8 @@ from abogen.constants import ( PROGRAM_DESCRIPTION, LANGUAGE_DESCRIPTIONS, VOICES_INTERNAL, + KOKORO_LANG_TO_COUNTRY, + SUPERTONIC_LANG_TO_COUNTRY, SUPPORTED_LANGUAGES_FOR_SUBTITLE_GENERATION, COLORS, SUBTITLE_FORMATS, @@ -1143,7 +1145,10 @@ class abogen(QWidget): supertonic_row_layout.addWidget(st_lang_label) self.st_lang_combo = QComboBox(self) for code in SUPERTONIC_AVAILABLE_LANGS: - self.st_lang_combo.addItem(code, code) + country_code = SUPERTONIC_LANG_TO_COUNTRY.get(code, code) + flag = get_resource_path("abogen.assets.flags", f"{country_code}.png") + icon_st = QIcon(flag) if flag and os.path.exists(flag) else QIcon() + self.st_lang_combo.addItem(icon_st, code, code) self.st_lang_combo.setCurrentText("en") self.st_lang_combo.setStyleSheet("QComboBox { min-height: 20px; padding: 6px 12px; }") self.st_lang_combo.currentTextChanged.connect(self._on_st_lang_changed) @@ -2011,7 +2016,8 @@ class abogen(QWidget): else: for v in VOICES_INTERNAL: icon = QIcon() - flag_path = get_resource_path("abogen.assets.flags", f"{v[0]}.png") + country_code = KOKORO_LANG_TO_COUNTRY.get(v[0], v[0]) + flag_path = get_resource_path("abogen.assets.flags", f"{country_code}.png") if flag_path and os.path.exists(flag_path): icon = QIcon(flag_path) self.voice_combo.addItem(icon, f"{v}", v) diff --git a/abogen/pyqt/voice_formula_gui.py b/abogen/pyqt/voice_formula_gui.py index feefb3e..284683a 100644 --- a/abogen/pyqt/voice_formula_gui.py +++ b/abogen/pyqt/voice_formula_gui.py @@ -31,6 +31,7 @@ from abogen.constants import ( VOICES_INTERNAL, SUPPORTED_LANGUAGES_FOR_SUBTITLE_GENERATION, LANGUAGE_DESCRIPTIONS, + KOKORO_LANG_TO_COUNTRY, COLORS, ) import re @@ -189,8 +190,9 @@ class VoiceMixer(QWidget): ) # Center the icons horizontally # Flag icon + country_code = KOKORO_LANG_TO_COUNTRY.get(language_code, language_code) flag_icon_path = get_resource_path( - "abogen.assets.flags", f"{language_code}.png" + "abogen.assets.flags", f"{country_code}.png" ) gender_icon_path = get_resource_path( "abogen.assets", "female.png" if is_female else "male.png" @@ -512,7 +514,8 @@ class VoiceFormulaDialog(QDialog): header_row.addWidget(QLabel("Language:")) self.language_combo = QComboBox() for code, desc in LANGUAGE_OPTIONS: - flag = get_resource_path("abogen.assets.flags", f"{code}.png") + country_code = KOKORO_LANG_TO_COUNTRY.get(code, code) + flag = get_resource_path("abogen.assets.flags", f"{country_code}.png") if flag and os.path.exists(flag): self.language_combo.addItem(QIcon(flag), desc, code) else: