From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?G=C3=A1bor_Boskovits?= Subject: Re: Frequent locales problems for new users Date: Sat, 21 Mar 2020 19:02:12 +0100 Message-ID: References: <20200317202843.GA18844@jasmine.lan> <87eetp8zx1.fsf@gnu.org> <20200318183622.GA25087@jasmine.lan> <87pnd51zz2.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="0000000000003c684105a16134d0" Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:59653) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jFiS8-0005N0-6f for guix-devel@gnu.org; Sat, 21 Mar 2020 14:02:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jFiS5-0002ac-UL for guix-devel@gnu.org; Sat, 21 Mar 2020 14:02:32 -0400 In-Reply-To: <87pnd51zz2.fsf@gnu.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane-mx.org@gnu.org Sender: "Guix-devel" To: =?UTF-8?Q?Ludovic_Court=C3=A8s?= Cc: Guix-devel --0000000000003c684105a16134d0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, Ludovic Court=C3=A8s ezt =C3=ADrta (id=C5=91pont: 2020. m=C3= =A1rc. 21., Szo 16:37): > Hi Leo, > > Leo Famulari skribis: > > > On Wed, Mar 18, 2020 at 04:07:22PM +0100, Ludovic Court=C3=A8s wrote: > >> As for =E2=80=98glibc-utf8-locales=E2=80=99 vs. =E2=80=98glibc-locales= =E2=80=99: the reason for choosing > >> the former by default over the latter is size (14 MiB vs. 917 MiB). > > > > Oof! I was going by the manual, which says 110 MiB. That does change > > things... > > Yes, I was also surprised. > > The patch below produces a package that includes all the UTF-8 locales > (actually I had written that patch long ago, it feels like we=E2=80=99re = running > in circles :-)). > > It takes ages to build, and when it=E2=80=99s finally done: > > --8<---------------cut here---------------start------------->8--- > $ ./pre-inst-env guix build -e '((@@ (gnu packages base) > make-glibc-utf8-locales/full))' > substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% > substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% > substituting /gnu/store/jdfs3xvlnj272475yja6bjrprfsgnkdd-glibc-2.29... > downloading from > https://ci.guix.gnu.org/nar/lzip/jdfs3xvlnj272475yja6bjrprfsgnkdd-glibc-2= .29. > .. > glibc-2.29 8.2MiB > 1.8MiB/s 00:05 [##################] 100.0% > > building > /gnu/store/w08zi9vnkd7bxpfvm5lgjyb30i7k7sw4-glibc-supported-utf8-locales.= scm.drv... > successfully built > /gnu/store/w08zi9vnkd7bxpfvm5lgjyb30i7k7sw4-glibc-supported-utf8-locales.= scm.drv > building > /gnu/store/ps6wh05pwjp5b0l9rh2yglv3sggpgcw4-glibc-utf8-locales-2.29.drv..= . > successfully built > /gnu/store/ps6wh05pwjp5b0l9rh2yglv3sggpgcw4-glibc-utf8-locales-2.29.drv > /gnu/store/p0knl9ggxk91x87ww702g2x78jxy1vgf-glibc-utf8-locales-2.29 > ludo@ribbon ~/src/guix$ guix size > /gnu/store/p0knl9ggxk91x87ww702g2x78jxy1vgf-glibc-utf8-locales-2.29 | tai= l > -1 > total: 855.7 MiB > --8<---------------cut here---------------end--------------->8--- > > So I think that=E2=80=99s when we reached the conclusion that we needed > parameterized packages to allow users to choose the locale(s) they need > or special support in =E2=80=98guix package=E2=80=99. > I believe we could also add individual locales as outputs. Then we just have to make sure that they are included to the LOCPATH. I believe we could do this to the frequently used locales, and direct users to only install out when they don't find an output with their locale. Wdyt? > > :-/ > > Attached is the list of supported UTF-8 locales, 312 in total. > > Thoughts? How do other distros deal with this? Are we missing some > trick to compress locale data? > > Ludo=E2=80=99. > g_bor > > ("aa_DJ" > "aa_ER" > "aa_ER@saaho" > "aa_ET" > "af_ZA" > "agr_PE" > "ak_GH" > "am_ET" > "an_ES" > "anp_IN" > "ar_AE" > "ar_BH" > "ar_DZ" > "ar_EG" > "ar_IN" > "ar_IQ" > "ar_JO" > "ar_KW" > "ar_LB" > "ar_LY" > "ar_MA" > "ar_OM" > "ar_QA" > "ar_SA" > "ar_SD" > "ar_SS" > "ar_SY" > "ar_TN" > "ar_YE" > "ayc_PE" > "az_AZ" > "az_IR" > "as_IN" > "ast_ES" > "be_BY" > "be_BY@latin" > "bem_ZM" > "ber_DZ" > "ber_MA" > "bg_BG" > "bhb_IN" > "bho_IN" > "bho_NP" > "bi_VU" > "bn_BD" > "bn_IN" > "bo_CN" > "bo_IN" > "br_FR" > "brx_IN" > "bs_BA" > "byn_ER" > "ca_AD" > "ca_ES" > "ca_ES@valencia" > "ca_FR" > "ca_IT" > "ce_RU" > "chr_US" > "cmn_TW" > "crh_UA" > "cs_CZ" > "csb_PL" > "cv_RU" > "cy_GB" > "da_DK" > "de_AT" > "de_BE" > "de_CH" > "de_DE" > "de_IT" > "de_LI" > "de_LU" > "doi_IN" > "dsb_DE" > "dv_MV" > "dz_BT" > "el_GR" > "el_CY" > "en_AG" > "en_AU" > "en_BW" > "en_CA" > "en_DK" > "en_GB" > "en_HK" > "en_IE" > "en_IL" > "en_IN" > "en_NG" > "en_NZ" > "en_PH" > "en_SC" > "en_SG" > "en_US" > "en_ZA" > "en_ZM" > "en_ZW" > "eo" > "es_AR" > "es_BO" > "es_CL" > "es_CO" > "es_CR" > "es_CU" > "es_DO" > "es_EC" > "es_ES" > "es_GT" > "es_HN" > "es_MX" > "es_NI" > "es_PA" > "es_PE" > "es_PR" > "es_PY" > "es_SV" > "es_US" > "es_UY" > "es_VE" > "et_EE" > "eu_ES" > "fa_IR" > "ff_SN" > "fi_FI" > "fil_PH" > "fo_FO" > "fr_BE" > "fr_CA" > "fr_CH" > "fr_FR" > "fr_LU" > "fur_IT" > "fy_NL" > "fy_DE" > "ga_IE" > "gd_GB" > "gez_ER" > "gez_ER@abegede" > "gez_ET" > "gez_ET@abegede" > "gl_ES" > "gu_IN" > "gv_GB" > "ha_NG" > "hak_TW" > "he_IL" > "hi_IN" > "hif_FJ" > "hne_IN" > "hr_HR" > "hsb_DE" > "ht_HT" > "hu_HU" > "hy_AM" > "ia_FR" > "id_ID" > "ig_NG" > "ik_CA" > "is_IS" > "it_CH" > "it_IT" > "iu_CA" > "ja_JP" > "ka_GE" > "kab_DZ" > "kk_KZ" > "kl_GL" > "km_KH" > "kn_IN" > "ko_KR" > "kok_IN" > "ks_IN" > "ks_IN@devanagari" > "ku_TR" > "kw_GB" > "ky_KG" > "lb_LU" > "lg_UG" > "li_BE" > "li_NL" > "lij_IT" > "ln_CD" > "lo_LA" > "lt_LT" > "lv_LV" > "lzh_TW" > "mag_IN" > "mai_IN" > "mai_NP" > "mfe_MU" > "mg_MG" > "mhr_RU" > "mi_NZ" > "miq_NI" > "mjw_IN" > "mk_MK" > "ml_IN" > "mn_MN" > "mni_IN" > "mr_IN" > "ms_MY" > "mt_MT" > "my_MM" > "nan_TW" > "nan_TW@latin" > "nb_NO" > "nds_DE" > "nds_NL" > "ne_NP" > "nhn_MX" > "niu_NU" > "niu_NZ" > "nl_AW" > "nl_BE" > "nl_NL" > "nn_NO" > "nr_ZA" > "nso_ZA" > "oc_FR" > "om_ET" > "om_KE" > "or_IN" > "os_RU" > "pa_IN" > "pa_PK" > "pap_AW" > "pap_CW" > "pl_PL" > "ps_AF" > "pt_BR" > "pt_PT" > "quz_PE" > "raj_IN" > "ro_RO" > "ru_RU" > "ru_UA" > "rw_RW" > "sa_IN" > "sah_RU" > "sat_IN" > "sc_IT" > "sd_IN" > "sd_IN@devanagari" > "se_NO" > "sgs_LT" > "shn_MM" > "shs_CA" > "si_LK" > "sid_ET" > "sk_SK" > "sl_SI" > "sm_WS" > "so_DJ" > "so_ET" > "so_KE" > "so_SO" > "sq_AL" > "sq_MK" > "sr_ME" > "sr_RS" > "sr_RS@latin" > "ss_ZA" > "st_ZA" > "sv_FI" > "sv_SE" > "sw_KE" > "sw_TZ" > "szl_PL" > "ta_IN" > "ta_LK" > "tcy_IN" > "te_IN" > "tg_TJ" > "th_TH" > "the_NP" > "ti_ER" > "ti_ET" > "tig_ER" > "tk_TM" > "tl_PH" > "tn_ZA" > "to_TO" > "tpi_PG" > "tr_CY" > "tr_TR" > "ts_ZA" > "tt_RU" > "tt_RU@iqtelif" > "ug_CN" > "uk_UA" > "unm_US" > "ur_IN" > "ur_PK" > "uz_UZ" > "uz_UZ@cyrillic" > "ve_ZA" > "vi_VN" > "wa_BE" > "wae_CH" > "wal_ET" > "wo_SN" > "xh_ZA" > "yi_US" > "yo_NG" > "yue_HK" > "yuw_PG" > "zh_CN" > "zh_HK" > "zh_SG" > "zh_TW" > "zu_ZA") > --0000000000003c684105a16134d0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,

Ludovic Court=C3=A8s <ludo@gnu.org> ezt =C3=ADrta (id=C5=91pont: 2020. m=C3=A1rc.= 21., Szo 16:37):
Hi Leo,

Leo Famulari <leo@famulari.name> skribis:

> On Wed, Mar 18, 2020 at 04:07:22PM +0100, Ludovic Court=C3=A8s wrote:<= br> >> As for =E2=80=98glibc-utf8-locales=E2=80=99 vs. =E2=80=98glibc-loc= ales=E2=80=99: the reason for choosing
>> the former by default over the latter is size (14=C2=A0MiB vs. 917= =C2=A0MiB).
>
> Oof! I was going by the manual, which says 110 MiB. That does change > things...

Yes, I was also surprised.

The patch below produces a package that includes all the UTF-8 locales
(actually I had written that patch long ago, it feels like we=E2=80=99re ru= nning
in circles :-)).

It takes ages to build, and when it=E2=80=99s finally done:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build -e '((@@ (gnu packages base) make-glibc-utf= 8-locales/full))'
substitute: updating substitutes from 'https://ci.guix.gnu.org= '... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org= '... 100.0%
substituting /gnu/store/jdfs3xvlnj272475yja6bjrprfsgnkdd-glibc-2.29...
downloading from https://ci.guix.gnu.org/nar/lzip/jdfs3xvlnj272475yja6bjrprfsgnkdd-glib= c-2.29...
=C2=A0glibc-2.29=C2=A0 8.2MiB=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A01.8MiB/s 00:05 [##################] 100.0%

building /gnu/store/w08zi9vnkd7bxpfvm5lgjyb30i7k7sw4-glibc-supported-utf8-l= ocales.scm.drv...
successfully built /gnu/store/w08zi9vnkd7bxpfvm5lgjyb30i7k7sw4-glibc-suppor= ted-utf8-locales.scm.drv
building /gnu/store/ps6wh05pwjp5b0l9rh2yglv3sggpgcw4-glibc-utf8-locales-2.2= 9.drv...
successfully built /gnu/store/ps6wh05pwjp5b0l9rh2yglv3sggpgcw4-glibc-utf8-l= ocales-2.29.drv
/gnu/store/p0knl9ggxk91x87ww702g2x78jxy1vgf-glibc-utf8-locales-2.29
ludo@ribbon ~/src/guix$ guix size /gnu/store/p0knl9ggxk91x87ww702g2x78jxy1v= gf-glibc-utf8-locales-2.29 | tail -1
total: 855.7 MiB
--8<---------------cut here---------------end--------------->8---

So I think that=E2=80=99s when we reached the conclusion that we needed
parameterized packages to allow users to choose the locale(s) they need
or special support in =E2=80=98guix package=E2=80=99.

I believe we could als= o add individual locales as outputs. Then we just have to make sure that th= ey are included to the LOCPATH. I believe we could do this to the frequentl= y used locales, and direct users to only install out when they don't fi= nd an output with their locale. Wdyt?

:-/

Attached is the list of supported UTF-8 locales, 312 in total.

Thoughts?=C2=A0 How do other distros deal with this?=C2=A0 Are we missing s= ome
trick to compress locale data?

Ludo=E2=80=99.
g_bor

("aa_DJ"
=C2=A0"aa_ER"
=C2=A0"aa_ER@saaho"
=C2=A0"aa_ET"
=C2=A0"af_ZA"
=C2=A0"agr_PE"
=C2=A0"ak_GH"
=C2=A0"am_ET"
=C2=A0"an_ES"
=C2=A0"anp_IN"
=C2=A0"ar_AE"
=C2=A0"ar_BH"
=C2=A0"ar_DZ"
=C2=A0"ar_EG"
=C2=A0"ar_IN"
=C2=A0"ar_IQ"
=C2=A0"ar_JO"
=C2=A0"ar_KW"
=C2=A0"ar_LB"
=C2=A0"ar_LY"
=C2=A0"ar_MA"
=C2=A0"ar_OM"
=C2=A0"ar_QA"
=C2=A0"ar_SA"
=C2=A0"ar_SD"
=C2=A0"ar_SS"
=C2=A0"ar_SY"
=C2=A0"ar_TN"
=C2=A0"ar_YE"
=C2=A0"ayc_PE"
=C2=A0"az_AZ"
=C2=A0"az_IR"
=C2=A0"as_IN"
=C2=A0"ast_ES"
=C2=A0"be_BY"
=C2=A0"be_BY@latin"
=C2=A0"bem_ZM"
=C2=A0"ber_DZ"
=C2=A0"ber_MA"
=C2=A0"bg_BG"
=C2=A0"bhb_IN"
=C2=A0"bho_IN"
=C2=A0"bho_NP"
=C2=A0"bi_VU"
=C2=A0"bn_BD"
=C2=A0"bn_IN"
=C2=A0"bo_CN"
=C2=A0"bo_IN"
=C2=A0"br_FR"
=C2=A0"brx_IN"
=C2=A0"bs_BA"
=C2=A0"byn_ER"
=C2=A0"ca_AD"
=C2=A0"ca_ES"
=C2=A0"ca_ES@valencia"
=C2=A0"ca_FR"
=C2=A0"ca_IT"
=C2=A0"ce_RU"
=C2=A0"chr_US"
=C2=A0"cmn_TW"
=C2=A0"crh_UA"
=C2=A0"cs_CZ"
=C2=A0"csb_PL"
=C2=A0"cv_RU"
=C2=A0"cy_GB"
=C2=A0"da_DK"
=C2=A0"de_AT"
=C2=A0"de_BE"
=C2=A0"de_CH"
=C2=A0"de_DE"
=C2=A0"de_IT"
=C2=A0"de_LI"
=C2=A0"de_LU"
=C2=A0"doi_IN"
=C2=A0"dsb_DE"
=C2=A0"dv_MV"
=C2=A0"dz_BT"
=C2=A0"el_GR"
=C2=A0"el_CY"
=C2=A0"en_AG"
=C2=A0"en_AU"
=C2=A0"en_BW"
=C2=A0"en_CA"
=C2=A0"en_DK"
=C2=A0"en_GB"
=C2=A0"en_HK"
=C2=A0"en_IE"
=C2=A0"en_IL"
=C2=A0"en_IN"
=C2=A0"en_NG"
=C2=A0"en_NZ"
=C2=A0"en_PH"
=C2=A0"en_SC"
=C2=A0"en_SG"
=C2=A0"en_US"
=C2=A0"en_ZA"
=C2=A0"en_ZM"
=C2=A0"en_ZW"
=C2=A0"eo"
=C2=A0"es_AR"
=C2=A0"es_BO"
=C2=A0"es_CL"
=C2=A0"es_CO"
=C2=A0"es_CR"
=C2=A0"es_CU"
=C2=A0"es_DO"
=C2=A0"es_EC"
=C2=A0"es_ES"
=C2=A0"es_GT"
=C2=A0"es_HN"
=C2=A0"es_MX"
=C2=A0"es_NI"
=C2=A0"es_PA"
=C2=A0"es_PE"
=C2=A0"es_PR"
=C2=A0"es_PY"
=C2=A0"es_SV"
=C2=A0"es_US"
=C2=A0"es_UY"
=C2=A0"es_VE"
=C2=A0"et_EE"
=C2=A0"eu_ES"
=C2=A0"fa_IR"
=C2=A0"ff_SN"
=C2=A0"fi_FI"
=C2=A0"fil_PH"
=C2=A0"fo_FO"
=C2=A0"fr_BE"
=C2=A0"fr_CA"
=C2=A0"fr_CH"
=C2=A0"fr_FR"
=C2=A0"fr_LU"
=C2=A0"fur_IT"
=C2=A0"fy_NL"
=C2=A0"fy_DE"
=C2=A0"ga_IE"
=C2=A0"gd_GB"
=C2=A0"gez_ER"
=C2=A0"gez_ER@abegede"
=C2=A0"gez_ET"
=C2=A0"gez_ET@abegede"
=C2=A0"gl_ES"
=C2=A0"gu_IN"
=C2=A0"gv_GB"
=C2=A0"ha_NG"
=C2=A0"hak_TW"
=C2=A0"he_IL"
=C2=A0"hi_IN"
=C2=A0"hif_FJ"
=C2=A0"hne_IN"
=C2=A0"hr_HR"
=C2=A0"hsb_DE"
=C2=A0"ht_HT"
=C2=A0"hu_HU"
=C2=A0"hy_AM"
=C2=A0"ia_FR"
=C2=A0"id_ID"
=C2=A0"ig_NG"
=C2=A0"ik_CA"
=C2=A0"is_IS"
=C2=A0"it_CH"
=C2=A0"it_IT"
=C2=A0"iu_CA"
=C2=A0"ja_JP"
=C2=A0"ka_GE"
=C2=A0"kab_DZ"
=C2=A0"kk_KZ"
=C2=A0"kl_GL"
=C2=A0"km_KH"
=C2=A0"kn_IN"
=C2=A0"ko_KR"
=C2=A0"kok_IN"
=C2=A0"ks_IN"
=C2=A0"ks_IN@devanagari"
=C2=A0"ku_TR"
=C2=A0"kw_GB"
=C2=A0"ky_KG"
=C2=A0"lb_LU"
=C2=A0"lg_UG"
=C2=A0"li_BE"
=C2=A0"li_NL"
=C2=A0"lij_IT"
=C2=A0"ln_CD"
=C2=A0"lo_LA"
=C2=A0"lt_LT"
=C2=A0"lv_LV"
=C2=A0"lzh_TW"
=C2=A0"mag_IN"
=C2=A0"mai_IN"
=C2=A0"mai_NP"
=C2=A0"mfe_MU"
=C2=A0"mg_MG"
=C2=A0"mhr_RU"
=C2=A0"mi_NZ"
=C2=A0"miq_NI"
=C2=A0"mjw_IN"
=C2=A0"mk_MK"
=C2=A0"ml_IN"
=C2=A0"mn_MN"
=C2=A0"mni_IN"
=C2=A0"mr_IN"
=C2=A0"ms_MY"
=C2=A0"mt_MT"
=C2=A0"my_MM"
=C2=A0"nan_TW"
=C2=A0"nan_TW@latin"
=C2=A0"nb_NO"
=C2=A0"nds_DE"
=C2=A0"nds_NL"
=C2=A0"ne_NP"
=C2=A0"nhn_MX"
=C2=A0"niu_NU"
=C2=A0"niu_NZ"
=C2=A0"nl_AW"
=C2=A0"nl_BE"
=C2=A0"nl_NL"
=C2=A0"nn_NO"
=C2=A0"nr_ZA"
=C2=A0"nso_ZA"
=C2=A0"oc_FR"
=C2=A0"om_ET"
=C2=A0"om_KE"
=C2=A0"or_IN"
=C2=A0"os_RU"
=C2=A0"pa_IN"
=C2=A0"pa_PK"
=C2=A0"pap_AW"
=C2=A0"pap_CW"
=C2=A0"pl_PL"
=C2=A0"ps_AF"
=C2=A0"pt_BR"
=C2=A0"pt_PT"
=C2=A0"quz_PE"
=C2=A0"raj_IN"
=C2=A0"ro_RO"
=C2=A0"ru_RU"
=C2=A0"ru_UA"
=C2=A0"rw_RW"
=C2=A0"sa_IN"
=C2=A0"sah_RU"
=C2=A0"sat_IN"
=C2=A0"sc_IT"
=C2=A0"sd_IN"
=C2=A0"sd_IN@devanagari"
=C2=A0"se_NO"
=C2=A0"sgs_LT"
=C2=A0"shn_MM"
=C2=A0"shs_CA"
=C2=A0"si_LK"
=C2=A0"sid_ET"
=C2=A0"sk_SK"
=C2=A0"sl_SI"
=C2=A0"sm_WS"
=C2=A0"so_DJ"
=C2=A0"so_ET"
=C2=A0"so_KE"
=C2=A0"so_SO"
=C2=A0"sq_AL"
=C2=A0"sq_MK"
=C2=A0"sr_ME"
=C2=A0"sr_RS"
=C2=A0"sr_RS@latin"
=C2=A0"ss_ZA"
=C2=A0"st_ZA"
=C2=A0"sv_FI"
=C2=A0"sv_SE"
=C2=A0"sw_KE"
=C2=A0"sw_TZ"
=C2=A0"szl_PL"
=C2=A0"ta_IN"
=C2=A0"ta_LK"
=C2=A0"tcy_IN"
=C2=A0"te_IN"
=C2=A0"tg_TJ"
=C2=A0"th_TH"
=C2=A0"the_NP"
=C2=A0"ti_ER"
=C2=A0"ti_ET"
=C2=A0"tig_ER"
=C2=A0"tk_TM"
=C2=A0"tl_PH"
=C2=A0"tn_ZA"
=C2=A0"to_TO"
=C2=A0"tpi_PG"
=C2=A0"tr_CY"
=C2=A0"tr_TR"
=C2=A0"ts_ZA"
=C2=A0"tt_RU"
=C2=A0"tt_RU@iqtelif"
=C2=A0"ug_CN"
=C2=A0"uk_UA"
=C2=A0"unm_US"
=C2=A0"ur_IN"
=C2=A0"ur_PK"
=C2=A0"uz_UZ"
=C2=A0"uz_UZ@cyrillic"
=C2=A0"ve_ZA"
=C2=A0"vi_VN"
=C2=A0"wa_BE"
=C2=A0"wae_CH"
=C2=A0"wal_ET"
=C2=A0"wo_SN"
=C2=A0"xh_ZA"
=C2=A0"yi_US"
=C2=A0"yo_NG"
=C2=A0"yue_HK"
=C2=A0"yuw_PG"
=C2=A0"zh_CN"
=C2=A0"zh_HK"
=C2=A0"zh_SG"
=C2=A0"zh_TW"
=C2=A0"zu_ZA")
--0000000000003c684105a16134d0--