From ce60948d8df58b2f2d26f436b7681591ec7328df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Sat, 24 Sep 2022 17:27:15 +0200 Subject: [PATCH] =?UTF-8?q?Module=20translate=20:=20neutralisation=20de=20?= =?UTF-8?q?la=20s=C3=A9lection=20de=20contenu=20Un=20seul=20tableau=20de?= =?UTF-8?q?=20langues=20compatibles=20avec=20la=20normalisation=20Conversi?= =?UTF-8?q?on=20des=20noms=20de=20dossiers=20sur=202=20caract=C3=A8res?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 49 ++++++++++++--------- core/include/update.inc.php | 14 ++++++ core/module/plugin/plugin.php | 2 +- core/module/translate/translate.php | 14 +++--- core/module/translate/view/index/index.php | 3 +- core/vendor/i18n/png/az_AZ.png | Bin 0 -> 167 bytes core/vendor/i18n/png/bg_BG.png | Bin 0 -> 99 bytes core/vendor/i18n/png/de.png | Bin 119 -> 99 bytes core/vendor/i18n/png/en.png | Bin 1208 -> 0 bytes core/vendor/i18n/png/es.png | Bin 287 -> 392 bytes core/vendor/i18n/png/fr.png | Bin 96 -> 0 bytes core/vendor/i18n/png/fr_FR.png | Bin 0 -> 108 bytes core/vendor/i18n/png/he_IL.png | Bin 0 -> 229 bytes core/vendor/i18n/png/hr.png | Bin 0 -> 344 bytes core/vendor/i18n/png/hu_HU.png | Bin 0 -> 114 bytes core/vendor/i18n/png/id.png | Bin 0 -> 104 bytes core/vendor/i18n/png/it.png | Bin 96 -> 109 bytes core/vendor/i18n/png/ja.png | Bin 0 -> 202 bytes core/vendor/i18n/png/lt.png | Bin 0 -> 99 bytes core/vendor/i18n/png/nb_NO.png | Bin 0 -> 199 bytes core/vendor/i18n/png/nl.png | Bin 108 -> 99 bytes core/vendor/i18n/png/nn_NO.png | Bin 0 -> 199 bytes core/vendor/i18n/png/pl.png | Bin 0 -> 98 bytes core/vendor/i18n/png/pt.png | Bin 395 -> 0 bytes core/vendor/i18n/png/pt_BR.png | Bin 0 -> 449 bytes core/vendor/i18n/png/pt_PT.png | Bin 0 -> 525 bytes core/vendor/i18n/png/ro.png | Bin 0 -> 113 bytes core/vendor/i18n/png/ru.png | Bin 0 -> 120 bytes core/vendor/i18n/png/sk.png | Bin 0 -> 316 bytes core/vendor/i18n/png/sl.png | Bin 0 -> 105 bytes core/vendor/i18n/png/sv_SE.png | Bin 0 -> 104 bytes core/vendor/i18n/png/th_TH.png | Bin 0 -> 112 bytes core/vendor/i18n/png/tr_TR.png | Bin 0 -> 227 bytes core/vendor/i18n/png/uk_UA.png | Bin 0 -> 120 bytes core/vendor/i18n/png/vi.png | Bin 0 -> 1034 bytes core/vendor/i18n/png/zh_CN.png | Bin 0 -> 196 bytes 36 files changed, 53 insertions(+), 29 deletions(-) create mode 100644 core/vendor/i18n/png/az_AZ.png create mode 100644 core/vendor/i18n/png/bg_BG.png delete mode 100644 core/vendor/i18n/png/en.png delete mode 100644 core/vendor/i18n/png/fr.png create mode 100644 core/vendor/i18n/png/fr_FR.png create mode 100644 core/vendor/i18n/png/he_IL.png create mode 100644 core/vendor/i18n/png/hr.png create mode 100644 core/vendor/i18n/png/hu_HU.png create mode 100644 core/vendor/i18n/png/id.png create mode 100644 core/vendor/i18n/png/ja.png create mode 100644 core/vendor/i18n/png/lt.png create mode 100644 core/vendor/i18n/png/nb_NO.png create mode 100644 core/vendor/i18n/png/nn_NO.png create mode 100644 core/vendor/i18n/png/pl.png delete mode 100644 core/vendor/i18n/png/pt.png create mode 100644 core/vendor/i18n/png/pt_BR.png create mode 100644 core/vendor/i18n/png/pt_PT.png create mode 100644 core/vendor/i18n/png/ro.png create mode 100644 core/vendor/i18n/png/ru.png create mode 100644 core/vendor/i18n/png/sk.png create mode 100644 core/vendor/i18n/png/sl.png create mode 100644 core/vendor/i18n/png/sv_SE.png create mode 100644 core/vendor/i18n/png/th_TH.png create mode 100644 core/vendor/i18n/png/tr_TR.png create mode 100644 core/vendor/i18n/png/uk_UA.png create mode 100644 core/vendor/i18n/png/vi.png create mode 100644 core/vendor/i18n/png/zh_CN.png diff --git a/core/core.php b/core/core.php index cb489a8c..9f452b68 100644 --- a/core/core.php +++ b/core/core.php @@ -154,37 +154,46 @@ class common { // Langue de l'interface sélectionnée public static $i18nUI = 'fr_FR'; public static $languagesUI = [ - 'ca' => 'Català, valencià', - 'da' => 'Dansk', + 'az_AZ' => 'Azərbaycan dili', + 'bg_BG' => 'български език', + //'ca' => 'Català, valencià', + //'cs' => 'čeština, český jazyk', + //'da' => 'Dansk', 'de' => 'Deutsch', 'en_EN' => 'English', 'es' => 'Español', + //'fa' => 'فارسی', 'fr_FR' => 'Français', + //'he_IL' => 'Hebrew (Israel)', + 'hr' => 'Hrvatski jezik', + 'hu_HU' => 'Magyar', + 'id' => 'Bahasa Indonesia', 'it' => 'Italiano', + 'ja' => '日本', + 'lt' => 'Lietuvių kalba', + //'mn_MN' => 'монгол', + 'nb_NO' => 'Norsk bokmål', + 'nn_NO' => 'Norsk nynorsk', 'nl' => 'Nederlands, Vlaams', 'pl' => 'Język polski, polszczyzna', + 'pt_BR' => 'Português(Brazil)', 'pt_PT' => 'Português', 'ro' => 'Română', + 'ru' => 'Pусский язык', + 'sk' => 'Slovenčina', + 'sl' => 'Slovenski jezik', 'sv_SE' => 'Svenska', - 'tr_TR' => 'Türkçe' - + 'th_TH' => 'ไทย', + 'tr_TR' => 'Türkçe', + 'uk_UA' => 'Yкраїнська мова', + 'vi' => 'Tiếng Việt', + 'zh_CN' => '中文 (Zhōngwén), 汉语, 漢語', + // source: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes ]; // Langues de contenu - // Sélection de langue de l'interface - public static $i18nContent = 'fr'; - public static $languagesContent = [ - 'fr' => 'Français (fr)', - 'de' => 'Deutsch (de)', - 'en' => 'English (en)', - 'es' => 'Español (es)', - 'it' => 'Italiano (it)', - 'nl' => 'Nederlands, Vlaams (nl)', - 'pt' => 'Português (pt)', - 'tr' => 'Türkçe' - ]; - + public static $i18nContent = 'fr_FR'; // Zone de temps public static $timezone; @@ -303,7 +312,7 @@ class common { setlocale (LC_TIME, self::$i18nContent . '_' . strtoupper (self::$i18nContent) ); } else { // Absence du cookie, la langue par défaut est celle de l'interface. - self::$i18nContent = (isset(self::$i18nUI)) ? substr(self::$i18nUI, 0, 2) : 'fr'; + self::$i18nContent = (isset(self::$i18nUI)) ? self::$i18nUI : 'fr_FR'; } // Instanciation de la classe des entrées / sorties @@ -334,7 +343,7 @@ class common { self::$i18nUI = $this->getData(['config', 'i18n', 'interface']); // La langue par défaut du contenu est celle du site si le cookie est absent. self::$i18nUI = (empty(self::$i18nUI) || is_null(self::$i18nUI)) ? self::$i18nUI = 'fr_FR' : self::$i18nUI ; - + // Le fichier existe-t-il ? if (!file_exists(self::I18N_DIR . self::$i18nUI . '.json')) { @@ -2186,7 +2195,7 @@ class common { * Affiche le cadre avec les drapeaux sélectionnés */ public function showi18n() { - foreach (self::$languagesContent as $key => $value) { + foreach (self::$languagesUI as $key => $value) { if ($this->getData(['config', 'i18n', $key]) === 'site' ) { if ( diff --git a/core/include/update.inc.php b/core/include/update.inc.php index 8e0aaf44..938b8060 100644 --- a/core/include/update.inc.php +++ b/core/include/update.inc.php @@ -853,6 +853,20 @@ if ($this->getData(['core', 'dataVersion']) < 11506) { // Version 11.6.00 if ($this->getData(['core', 'dataVersion']) < 11600) { + // Correspondance pour les dossiers de langue à convertir + $languages = [ + 'fr' => 'fr_FR', + 'en' => 'en_EN', + 'pt' => 'pt_PT' + ]; + // COnvertit les dossiers vers la nouvelle structure + foreach($languages as $key => $value) { + if (is_dir(self::DATA_DIR . $key)) { + $this->copyDir(self::DATA_DIR . $key, self::DATA_DIR . $value); + $this->removeDir(self::DATA_DIR . $key); + } + } + // Supprime un cookie non nécessaire helper::deleteCookie('ZWII_USER_LONGTIME'); diff --git a/core/module/plugin/plugin.php b/core/module/plugin/plugin.php index 9c433413..7ac3b1c1 100644 --- a/core/module/plugin/plugin.php +++ b/core/module/plugin/plugin.php @@ -408,7 +408,7 @@ class plugin extends common { public function index() { // Tableau des langues rédigées - foreach (self::$languagesContent as $key => $value) { + foreach (self::$languagesUI as $key => $value) { if ($this->getData(['config','i18n', $key]) === 'site' || $key === 'fr') { $i18nSites[$key] = $value; diff --git a/core/module/translate/translate.php b/core/module/translate/translate.php index 86bb1aa8..c65d4176 100644 --- a/core/module/translate/translate.php +++ b/core/module/translate/translate.php @@ -24,7 +24,7 @@ class translate extends common { // Language content public static $translateOptions = []; - // Page pour la configuration dans la langue + // Page pour la configuration dans la langue public static $pagesList = []; public static $orphansList = []; // Liste des langues installées @@ -34,7 +34,7 @@ class translate extends common { // Activation du bouton de copie public static $siteTranslate = true; - //UI + //UI // Fichiers des langues de l'interface public static $i18nFiles = []; @@ -65,7 +65,7 @@ class translate extends common { // Enregistrer la langue if ($success) { $this->setData(['config', 'i18n', $toCreate, 'site' ]); - $notification = 'Données ' . self::$languagesContent[$copyFrom] . ' copiées vers ' . self::$languagesContent[$toCreate]; + $notification = 'Données ' . self::$languagesUI[$copyFrom] . ' copiées vers ' . self::$languagesUI[$toCreate]; } else { $notification = "Quelque chose n\'a pas fonctionné, vérifiez les permissions."; } @@ -82,7 +82,7 @@ class translate extends common { ]); } // Tableau des langues installées - foreach (self::$languagesContent as $key => $value) { + foreach (self::$languagesUI as $key => $value) { if ($this->getData(['config','i18n', $key]) === 'site') { self::$languagesTarget[$key] = $value; } @@ -105,7 +105,7 @@ class translate extends common { // Soumission du formulaire if($this->isPost()) { // Edition des langues - foreach (self::$languagesContent as $keyi18n => $value) { + foreach (self::$languagesUI as $keyi18n => $value) { if ($keyi18n === 'fr') continue; // Effacement d'une langue installée @@ -198,7 +198,7 @@ class translate extends common { 'state' => true ]); } - + // Préparation de l'affichage du formulaire // Liste des langues disponibles @@ -217,7 +217,7 @@ class translate extends common { } // Modification des options de suppression de la langue installée. - foreach (self::$languagesContent as $key => $value) { + foreach (self::$languagesUI as $key => $value) { if ($this->getData(['config','i18n',$key]) === 'site') { self::$translateOptions [$key] = [ 'none' => 'Drapeau masqué', diff --git a/core/module/translate/view/index/index.php b/core/module/translate/view/index/index.php index 97f6b6b4..2792cc07 100644 --- a/core/module/translate/view/index/index.php +++ b/core/module/translate/view/index/index.php @@ -60,7 +60,7 @@ - +
@@ -318,4 +318,5 @@
+ **/ ?> diff --git a/core/vendor/i18n/png/az_AZ.png b/core/vendor/i18n/png/az_AZ.png new file mode 100644 index 0000000000000000000000000000000000000000..6a942fc8506120e23dd64d8f174e415276c2af77 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<gTe~DWM4ftcg6D literal 0 HcmV?d00001 diff --git a/core/vendor/i18n/png/bg_BG.png b/core/vendor/i18n/png/bg_BG.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0cba6d1e456601d867de0804578d95f83ee989 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<;#0(_Az6uWpQk(%kA+8M5@~)`~{r~^}pzr^A wKtWMY7sn8Z%gGU}>^vcmdKI;Vst0I!o9T>t<8 literal 0 HcmV?d00001 diff --git a/core/vendor/i18n/png/de.png b/core/vendor/i18n/png/de.png index cf8cf1589b7215fddb2054909c41fadc7cd88216..64f97773d38472e271e4857aad3095434b342e91 100644 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<;#0(_Az6uWpQk(%kA+C3U3pJYDq*vRCwC8Rc%aLWfVTW_m;^ZON@5AX#8O!`iB^(7}3bUvA_mq z%sIozf-_?i0TYK?~7dt+r4UKO#CtbX*YN zyjO1c@voK(*NI?o@Q6eH({Y4}Vu@BdLbRu(&gQxL-7t|YNw3(Qbo=?|th%RNon1h` zzv4Z8s#lVZ5*27PMI5^5;m|BV!~P&YYTL(#+JWCHj25jlzyBTo!UE9f>n}$ZE6&VB ziF4U+`&}*^-5C8f@#P962*NQ*DkeI(8T3I(DiJg&BJb6#i(@^5_T8x#QFOMp0m17F zc6N;r(c!e*rpev`ds>R+iD*anW&Eaie5X$K2*L*%4Q`qTETy?I0u6^l=OIzMt+b-L z-%(@!MJrCHrhDxUW+~YtGGV5ofcqeLQGl;&yT}g7%c1 zy{a^?R;{#LC_D2#QFcmB(|GToW7nG&L2|ZrAU+rjnT&nW(S_(Izb+jndS9bCM3kGb zv%bIm$}N53_|~n?i(eqx?+=!jcAPNwdzuHaXurnUavP~9%ve|I{&DxzL}(VwYEJ_)dxPmqN>j7 z>KjC3L{76AkIUw&xmWbAu5OiohKA>NXVoUZR+W+204NSvN2(fHwQvwPVZYCJe}(O0 zI2>}jLn|x(r6oMtjYdGj>?RYt&E0!p9u!iPkjLX)c87xjq;rr}K(g)Fv2NDw+wnae zCtGzo8~nI9YvfRtr($9zh+uGRa-3C`SpdQiAj?QuPhU5RBs{`?T5~MiHXJ^}{!i%5 z8zQp{+IU--FUS42Au=M-D|Czn=yaPmWaAiv0n7xG!F<>#`NY^5O{Uc`8jWm>OG}tA z=FCG>Odj*!IL3c1UjyHs+QFgu$Vy?iuwmFUwtQyu7>C9dDtsfcm)OpmNlDn$kts*! zflJt3Z16wJw?-L!?|U)+)8WB6R)yUGE`Sl>1=sHIAAZ=nm9}-)VDsf^tE>pkmN6TR*$QSLr3;M$jzpOs%oCnTn4b!jy(u@n}rxwLl6ylN$utpuMSryiK54B@I zxn~R0q94C{T+yXT%#$3`ltr;E63mGgv8Y*uJ2GrjU%6Wp;*GSENgUL(o?dBN&7^Q@ zhmyGf0004WQchF;8si6j0001&Nkl!DQ% zLy?-nT61%?5%9)h)7bmPxq;;{%-OL&KS$Ow1w&u&IPZE%wGYD}TXR0jF31uXu9k~> md)oV-iKr0j8ht%~`CM-+NhRK`Crds60000zmH za=b#Gy`-DAkb|nIo3Z7-S*z;&9nEsFp)xU{ lvQ$ggRLC-;#nW&w8US^P)|0000pP)t-s|NsBO z&+bcd&5owvT!7L&XUX^Z{Qx+)x5n$g&F$Xh_I8umAyUB)L%gQB<}+W$LTt;;{Gek1 z003=CL_t(I%hi)h4uBvGL`!Kwe!~4vtGL%rB8l-Wx|&S?M9bMgD1v+`Odzi&CW7gb zs+}l!k;dFae0WxBk+JVXiW-)=#%UaDwvuwC@-lkCC#lZie7b zS@prkB^8WCiiD@2x&IIl--(liJbX}Oy<-b0cqj3{;1Bm0n7stRhYO0001wNkls#|{G_3`J1`!H^70 z?S>(#Arz08k%HS8+G%H||ow~k%&sh?H>9KoO*K=H@0hnLRBaZFs zo>RCX)$PvJ)^rCN-T)B}2%!WM%$*2A8EGkXB!h6oJ-Qo%aNv@=8@_+NB^fqxJ~2ag qP&8X07IrZ&p;Be(8GX>(AK?dzuoR!l-(}MP0000s0>&DV_kI5ZC`ez`*dozWzTWgTe~DWM4fF{B(~ literal 0 HcmV?d00001 diff --git a/core/vendor/i18n/png/it.png b/core/vendor/i18n/png/it.png index d62e50b293e5f47f6e99d909e7d5cf51c8ba9d13..bb394d9f7bd3982823acf9f3a3717f0daddff1f2 100644 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<~!VDz;*jgTe~DWM4fcb^-< diff --git a/core/vendor/i18n/png/ja.png b/core/vendor/i18n/png/ja.png new file mode 100644 index 0000000000000000000000000000000000000000..d2517a39e9c98d136d0b65bd9c37d5323cf3fc6a GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<~!VDz;*jfL~b|omg1TeW82qs0>&Db4_&5LZRF?*IS)uanVe?tW?q w6cqJzaSV~ToE*W*&a)+{?GWSH8C%#HlvN{_N9g|h2UNh|>FVdQ&MBb@0Fgc$xBvhE literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^azHG?!2~2lPfAS&QpTPxjv*e$lOxm@J1QSB$ojIu z;8#ePV6VX8`dN*Ei`&~T?p!-NvqeJW?yk%hw_Z6hH)e(}^DgQ<>FNIf)Xw1P>gTe~ HDWM4f7d9gV diff --git a/core/vendor/i18n/png/nn_NO.png b/core/vendor/i18n/png/nn_NO.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5146e41cac4d18c47418228fbc85638aba26b3 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<|!VDy}(v2N}lzMf#6Rw}a*Dzy=wXC@zQ!&RBi(iO%@kxd4uP6wfH~^bE04H`6pfwLMZy!L0kB>Cx*#$pTSS?JBJ6e_a-2tx2 z5}Cvo(bEd3zsrrm8GO7RUVfz@K4;(72M{!V0h>Bwwj;sL4Wq^t*6rXQJ!g`+xFAA@ zt<1mg+5<{$nPYT#OLL5zuWz;C#lqmyI#hX-#PwhR008w#L_t(I%e~ae5`r)c0MHfH`y#k+|NnhvD2pQ?^+FCkWZq0jngVOdfJLCDNkJn32#k5CCxDUYGm!3~i9P)R zv-}K-<(Q^pDPZT>6jTdw^vvRSxsNzA4{>$ rGRZYVD!aJiDR?qZLH= literal 0 HcmV?d00001 diff --git a/core/vendor/i18n/png/pt_PT.png b/core/vendor/i18n/png/pt_PT.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2af784b4b4cafa06a0a360decf220a1c211041 GIT binary patch literal 525 zcmV+o0`mQdP)IIWdQpY(An&Dpa9j?0O{xec%=a2cL4c2I^>N2^>+Y@q0sCA0OHgD<|P1Vp8&ec0D`0d zjjI6SG63#A0=vZko3;S>Nk{p7eC}E;`fY9Ml2Yt=CHBd=pR(92R;uS`0M4-h*1-Tl zg#hvj0N7$7-QWP+e*o>o0MCH{-_JSctU}X`0Msx5=zSmbb5h@qJ>Ne7%eF%qZ2*Lt zDw?!C`9c8TT1VgI^5=aZ?(z6%gu?Bh_;>&S00DGTPE-CG;|F~J007ZRL_t(I%jMI@ z4uVh+1yJA>pO2y}UrcYQLM%*_Zv_L{)^2*M9TiVNx&5KBsK z770cDU|hizuTp7}gkh|NWUa8%I#PRzvECE9Y`)_F4xK|9iM`DhpG zbs0>&DV_kI5Z9|(vj6}8XRus$Ra>rd zwKGVXu_VYZ_@C5c_F5oE%G1R$MB;KXM=LX1lwtTm#uq0N}2ktu>SG#{o~{qN}D)u zv*dMuVOfu0T9J~Ky7-)+oo!^pGbPS&yS%4O$@pK0004WQchF;8si6j0001! zNkl~x?OfU* ziqL+0>ug%?ZDkmz^_=2AsBn$Od>;wVQ#(X>_5BmD3=xL`@e-7}7yJQ1T_QO^5T8~6 O0000s0>&DV_kI5LbqxWB>pEm)mM3ztuWw zmM0@nT*A}EF+}2Wa>Z6It}x>ZU6NevCdrrN7#NbyMSobl`kgya4TGnvpUXO@geCwg CG96X` literal 0 HcmV?d00001 diff --git a/core/vendor/i18n/png/sv_SE.png b/core/vendor/i18n/png/sv_SE.png new file mode 100644 index 0000000000000000000000000000000000000000..7b62bc6a02cf6697ade3a2f60091f11477320386 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<`#0(_uwzYf%Qk(%kA+8Kr%m1BWsGl8Ns0>&DV_kI5Z9%WhF`w^IMY5wSIf(Y zKd%}nF7N5$7$R{wIYEJOO%rolfQ7=DKm6<_$&((*sKifTU{F?VthZMR_yAPO;OXk; Jvd$@?2>|O69$o+d literal 0 HcmV?d00001 diff --git a/core/vendor/i18n/png/tr_TR.png b/core/vendor/i18n/png/tr_TR.png new file mode 100644 index 0000000000000000000000000000000000000000..6c6b1b3fe1793b23d353c541c59af05126dd8a3d GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<~!VDz;*j?A+C=(#U68s|NsC0xu)rB zpRlLW>OT%0eVdy5@59Fz7EbR=s=qE?@#o>AZ=1G#Z0VBka#I6pWGo5t3;rkdn7tOr zN%3@X4AD5BoFH<9fr+O?Ok`e%ro`PPQ=0TNE-i_ExmCdTg44=?00S0Z15f@Ve0(lq zB4Jh>Nwah2^r&boDiJ&)cHPrOXi9JuM^WgcNy>^-3yga?Z}#1t8&TVG_5BU!%mqq( Z4DTkGXuM$&)C1bb;OXk;vd$@?2>{LXRM!9i literal 0 HcmV?d00001 diff --git a/core/vendor/i18n/png/uk_UA.png b/core/vendor/i18n/png/uk_UA.png new file mode 100644 index 0000000000000000000000000000000000000000..3e71d69a0369606af2ffe2a9927b903a7a3c45bf GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<~#0(^h>s0>&DV_kI5Z8tovH!0!FhuVLGPb4~ zm;uEZOM?7@|4BV&uLW|XJY5_^BrYdMu(IPR5gwO PRWW$F`njxgN@xNA@^&IT literal 0 HcmV?d00001 diff --git a/core/vendor/i18n/png/vi.png b/core/vendor/i18n/png/vi.png new file mode 100644 index 0000000000000000000000000000000000000000..700880a7318b9ec76dbcb563dbee3ac102725409 GIT binary patch literal 1034 zcmV+l1oiugP)bv{@t=Q6eMH({QTp#Hvj+s_4W1It~2}l`xYi=)~hl3`T5VPwf6Jsq&8NkH(21u zf#beb1$(=AN`Lv^M6sIM1aolP*kitjx=!F~^=Pd#uJOh`ZObMvAe=j=0dh znmDdxZR_B^;JZ`O;p&;a(XGqdr^D2-&fkHx(M6TOti`X<#-w$jd<1W++O|<;m2AY* z#(=1WPK#H`zm~0LdepXI+|jb;%Y4=XR{QwxbECfI(wmZeMw5O;^20mq;lQ|;pt_i$pIvcWo@FM1 zw4I+>o3 z>qHvbyO$;ifjsRtI297QY3o4uH|yN1idIH z6f{ou0-07r=qG|eX=WU=;`0|G=a|t^fa4mhE!95T^jfPUP{c52M6p6gD4Jz{q1-_0J*GAAS2$n-37915y2Mo9vi?_k} z*afiWE~DC1PZ3zPS%9{7tCccVQ{lP<*29zmvzL)z5ch+*R>-DG^~=GLS>8B1R;rHA z8pO<)eh0TDe`?;*skT%nG`f5BwdOxR4aDN{Sm5;B-;Df>_WXTaSok1n5*#6XEXEVU zB{a4lfA3$s^XVHn;UR1oTP<>eetqA;caU4}SkRPHNf#w=0$=gH?9QPWZAEQ2CzED7 z$Y{0mvU?{8aRvj2nV`0q{nxO`Bqb&i$^74JBJjZW2RtNIN-q`DumAu607*qoM6N<$ Ef{)%P00000 literal 0 HcmV?d00001 diff --git a/core/vendor/i18n/png/zh_CN.png b/core/vendor/i18n/png/zh_CN.png new file mode 100644 index 0000000000000000000000000000000000000000..e653394ba2483e7a4be473bbd3c587940bbbeee3 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<~!VDz;*j^-i)gfxF<6*H)k=3 tUEge-(B*sV+1YJOI!!)2iy8PC7`}CJ9(;XK$`@!8gQu&X%Q~loCID+uK)wI~ literal 0 HcmV?d00001