<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
    <meta http-equiv="X-UA-Compatible" content="IE=7"/>
    <title>MSEC: süsteemi turvalisus ja audit</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="index.html" title="Mageia juhtimiskeskus"/><link rel="up" href="mcc-security.html" title="Turvalisus"/><link rel="prev" href="mcc-security.html" title="Turvalisus"/><link rel="next" href="drakfirewall.html" title="Isikliku tulemüüri seadistamine"/><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><script type="text/javascript">
      //The id for tree cookie
      var treeCookieId = "treeview-6076";
      var language = "en";
      var w = new Object();
      //Localization
      txt_filesfound = 'Tulemused';
      txt_enter_at_least_1_char = "Kirjutada tuleb vähemalt üks märk.";
      txt_browser_not_supported = "JavaScript on brauseris keelatud. Lülitage JavaScript sisse, et näha lehekülge täielikult.";
      txt_please_wait = "Palun oodake, otsitakse ...";
      txt_results_for = "Tulemused otsingule: ";
      txt_no_results_for = "";
    </script><style type="text/css">
      input {
      margin-bottom: 5px;
      margin-top: 2px;
      }

      .folder {
      display: block;
      height: 22px;
      padding-left: 20px;
      background: transparent url(../../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
      }
      
    </style><link rel="shortcut icon" href="favicon.png" type="image/x-icon"/><link rel="stylesheet" type="text/css" href="../../common/css/positioning.css"/><link rel="stylesheet" type="text/css" href="../../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"/><link rel="stylesheet" type="text/css" href="../../common/jquery/treeview/jquery.treeview.css"/><link rel="stylesheet" type="text/css" href="webhelp-default.css"/><link rel="stylesheet" type="text/css" href="webhelp-custom.css"/><script type="text/javascript" src="../../common/jquery/jquery-1.4.2.min.js"><!----></script><script type="text/javascript" src="../../common/jquery/jquery-ui-1.8.2.custom.min.js"><!----></script><script type="text/javascript" src="../../common/jquery/jquery.cookie.js"><!----></script><script type="text/javascript" src="../../common/jquery/treeview/jquery.treeview.min.js"><!----></script><script type="text/javascript" src="search/htmlFileList.js"><!----></script><script type="text/javascript" src="search/htmlFileInfoList.js"><!----></script><script type="text/javascript" src="nwSearchFnt.js"><!----></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"><!----></script><script type="text/javascript" src="search/index-2.js"><!----></script><script type="text/javascript" src="search/index-3.js"><!----></script></head><body><div xmlns="" id="header"><div id="navheader"><!----><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
	    </a></td><td><img src="../../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Otsingutulemuste tähistamise sisse/väljalülitamine"/></td><td><a accesskey="p" href="mcc-security.html">Eelmine</a>
		  |
		  <a accesskey="u" href="mcc-security.html">Üles</a>
		|
		<a accesskey="n" href="drakfirewall.html">Järgmine</a></td></tr></table></div><div id="headerlogo"><img src="mageia-2013-200p.png" alt="Company Logo"/></div><h1 id="pagetitle">MSEC: süsteemi turvalisus ja audit<br/>Turvalisus</h1></div><div id="content"><!----><div xml:lang="et" class="section" title="MSEC: süsteemi turvalisus ja audit"><div class="titlepage"><div><div><h3 class="title"><a id="msecgui"><!----></a>MSEC: süsteemi turvalisus ja audit</h3></div><div><h2 class="subtitle">msecgui</h2></div></div></div><div class="mediaobject" align="center"><img src="images/msecgui.png" align="middle"/></div><div class="section" title="Tutvustus"><div class="titlepage"><div><div><h4 class="title"><a id="d4e3065"><!----></a>Tutvustus</h4></div></div></div><p>Tööriist msecgui<sup>[<a id="d4e3068" href="#ftn.d4e3068" class="footnote">43</a>]</sup> on programmi msec
graafiline kasutajaliides, mis võimaldab seadistada süsteemi turvet kahel
moel:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Sellega saab paika panna süsteemi käitumise, mille korral msec kehtestab
süsteemis muudatused, mis suurendavad selle turvalisust.</p></li><li class="listitem"><p>See lubab määrata kindlaks perioodilised kontrollid, mida võetakse süsteemis
ette automaatselt, et hoiatada teid, kui miski paistab ohtlikuna.</p></li></ul></div><p>Programm msec kasutab niinimetatud turbetasemete kontseptsiooni. Need
tasemed hõlmavad teatavat süsteemsete õiguste kogumit, mille põhjal
analüüsitakse süsteemis toimuvaid muutusi. Mõningad tasemed annab Mageia
ette, aga neid saab oma soovi kohaselt muuta ja kohandada.</p></div><div class="section" title="Ülevaate kaart"><div class="titlepage"><div><div><h4 class="title"><a id="d4e3077"><!----></a>Ülevaate kaart</h4></div></div></div><p>Pilt on näha ülal.</p><p>Esimesel kaardil on ära toodud eri turbetööriistade loetelu, millest paremal
asuvad nupud nende seadistamiseks:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Tulemüür, mille leiab ka juhtimiskeskuses Turvalisus -&gt; Isikliku tulemüüri
seadistamine</p></li><li class="listitem"><p>Uuendused, mille leiab ka juhtimiskeskuses Tarkvara -&gt; Süsteemi uuendamine</p></li><li class="listitem"><p>Msec ise koos mõninga teabega:</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>lubatud või mitte</p></li><li class="listitem"><p>seadistatud baasturbetase</p></li><li class="listitem"><p>viimaste perioodiliste kontrollide aeg ning nupud, mis vastavalt näitavad
üksikasjalikumat teavet ja võimaldavad kontrolli kohe käivitada</p></li></ul></div></li></ul></div></div><div class="section" title="Turbeseadistuste kaart"><div class="titlepage"><div><div><h4 class="title"><a id="d4e3095"><!----></a>Turbeseadistuste kaart</h4></div></div></div><p>Klõps teisele sakile või nupule Turve -&gt; <span class="guibutton">Seadista</span>
avab allnähtava akna.</p><div class="mediaobject"><img src="images/msecgui2.png"/></div><div class="section" title="Põhiseadistuste kaart"><div class="titlepage"><div><div><h5 class="title"><a id="d4e3102"><!----></a>Põhiseadistuste kaart</h5></div></div></div><p class="underline">
        <span class="underline">Turbetasemed:</span>
      </p><p>Kui olete märkinud kastikese <span class="guilabel">MSEC-i tööriista lubamine</span>,
saab siin kaardil topeltklõpsuga valida sobiva turbetaseme, mida pärast
valimist näidatakse rasvases kirjas. Kui kastike on märkimata, kasutatakse
taset « puudub ». Saadaval on järgmised tasemed:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Tase <span class="bold"><strong>puudub</strong></span>. See on hea siis, kui te ei
soovi, et msec majandaks süsteemi turbega, ja eelistate sellega omal käel
hakkama saada. Sel tasemel keelatakse kõik turbekontrollid ning ei piirata
mingil moel süsteemseid seadistusi. Palun valige see tase ainult siis, kui
olete täiesti kindel, et teate, mida teete, sest sel juhul on teie süsteem
rünnakutele avatud.</p></li><li class="listitem"><p>Tase <span class="bold"><strong>standard</strong></span> on vaikimisi rakendatav
seadistus, mida kasutatakse paigaldamisel, kui paigaldaja ei vali midagi
muud. See tavalisele kasutajale sobiv tase sisaldab mõningaid süsteemsete
seadistuste piiranguid ning käivitab igapäevased turbekontrollid, mis
otsivad muudatusi süsteemsetes failides ja kontodes ning kataloogide
õigustes, mis võivad anda võimaluse halba korda saata. (See tase on sarnane
mseci varasemate versioonide tasemetega 2 ja 3.)</p></li><li class="listitem"><p>Tase <span class="bold"><strong>secure</strong></span> on mõeldud selleks, kui
soovite, et süsteem oleks tõeliselt turvaline, aga siiski veel
kasutatav. Süsteemi seadistusi piiratakse veelgi ning perioodilisi
kontrollegi on rohkem. Lisaks piiratakse ligipääsu süsteemile. (See tase on
sarnane mseci varasemate versioonide tasemetega 4 (kõrge) ja 5
(paranoiline).)</p></li><li class="listitem"><p>Lisaks mainitud tasemetele pakutakse veel mitmeid eesmärgipõhiseid
turbetasemeid, näiteks <span class="bold"><strong>fileserver</strong></span>,
<span class="bold"><strong>webserver</strong></span> ja <span class="bold"><strong>netbook</strong></span>. Nende puhul üritatakse süsteemi turve
seadistada vastavalt levinumatele kasutusjuhtumitele.</p></li><li class="listitem"><p>Viimased kaks taset nimetustega <span class="bold"><strong>audit_daily
</strong></span> ja <span class="bold"><strong>audit_weekly</strong></span> ei ole
õigupoolest päris turbetasemed, vaid pigem ainult tööriistad perioodiliste
kontrollide tarbeks.</p></li></ol></div><p>Tasemed salvestatakse faili
<code class="filename">etc/security/msec/level.&lt;tasemenimi&gt;</code>. Soovi korral
võib paika panna omaenda kohandatud turbetaseme, salvestades selle failina
<code class="filename">level.&lt;tasemenimi&gt;</code> kataloogis
<code class="filename">etc/security/msec/.</code> See võimalus on mõistagi mõeldud
väga kogenud kasutajatele, kellel on oma vajadused süsteemi turvet enda käe
järgi kohendada.</p><div class="caution" title="Ettevaatust" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Ettevaatust</h3><p>Pidage kindlasti silmas, et kasutaja muudetud parameetreid arvestatakse enne
vaiketaseme määratlusi.</p></div><p>
        <span class="underline">Turbehoiatused:</span>
      </p><p>Kui märkida ära kastike <span class="guibutton">Turbehoiatuste saatmine
e-postiga:</span>, saadetakse mseci loodud turbehoiatused kohalikule
e-posti aadressile turbeadministraatorile, kelle nimi tuleb kirja panna
kõrval asuval väljal. Sinna võib kirjutada kas kohaliku kasutajanime või
täieliku e-posti aadressi (selle huvides peavad olema vajalikult seadistatud
kohalik e-post ja e-posti haldur). Samuti võib lasta turbehoiatusi näidata
otse töölaual, milleks tuleb ära märkida vastav kastike.</p><div class="important" title="Oluline" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Oluline</h3><p>Turbehoiatuste edastamine on äärmiselt soovitatav sisse lülitada, et
turbeadministraator saab õigeaegselt teada võimalikest
probleemidest. Vastasel juhul peab administraator järjepidevalt uurima
logifaile, mis salvestatakse kataloogi
<code class="filename">/var/log/security.</code></p></div><p><span class="underline">Turbevalikud:</span></p><p>Kohandatud taseme loomine ei ole ainuke viis sättida arvuti turvet oma käe
järgi: samamoodi võib kasutada tööriista eri kaarte, et muuta just neid
valikuid, mida vaja. Mseci kehtiv seadistus on salvestatud faili
<code class="filename">/etc/security/msec/security.conf</code>. See sisaldab nii
kehtivat turbetaseme nime kui ka loetelu kõigist muudetud valikutest.</p></div><div class="section" title="Süsteemi turvalisuse kaart"><div class="titlepage"><div><div><h5 class="title"><a id="d4e3144"><!----></a>Süsteemi turvalisuse kaart</h5></div></div></div><p>Sellel kaardil võib näha vasakus veerus turbevalikut, keskmises veerus selle
kirjeldust ja paremas veerus kehtivat väärtust.</p><div class="mediaobject"><img src="images/msecgui3.png"/></div><p>Mõne valiku muutmiseks tehke sellel topeltklõps, mille järel ilmub uus aken
(vt pilti allpool). Selles on näha valiku nimi, lühike kirjeldus, kehtiv ja
vaikeväärtus ning ripploend, milles saab valida uue väärtuse. Klõpsuga
nupule <span class="guibutton">Olgu</span> saab muudatuse kinnitada.</p><div class="mediaobject"><img src="images/msecgui11.png"/></div><div class="caution" title="Ettevaatust" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Ettevaatust</h3><p>Ärge unustage tööriista sulgedes oma seadistust lõplikult salvestamast
menüükäsuga <span class="guimenu">Fail -&gt; Salvesta seadistus</span>. Kui olete
seadistusi muutnud, annab msecgui võimaluse need enne salvestamist üle
vaadata.</p></div><div class="mediaobject"><img src="images/msecgui10.png"/></div></div><div class="section" title="Võrguturvalisuse kaart"><div class="titlepage"><div><div><h5 class="title"><a id="d4e3161"><!----></a>Võrguturvalisuse kaart</h5></div></div></div><p>Sellelt kaardilt leiab võrguga seotud valikud ja kõik käib siin samamoodi
nagu eelmisel kaardil.</p><div class="mediaobject"><img src="images/msecgui4.png"/></div></div><div class="section" title="Perioodiliste kontrollide kaart"><div class="titlepage"><div><div><h5 class="title"><a id="d4e3167"><!----></a>Perioodiliste kontrollide kaart</h5></div></div></div><p>Perioodiliste kontrollide eesmärk on anda turbehoiatuste abil
turbeadministraatorile teada kõigest, mida msec peab võimalikuks ohuks.</p><p>Kui märkida kastike <span class="guibutton">Perioodiliste turbekontrollide
lubamine</span>, näeb sellel kaardil kõiki mseci sooritatavaid
perioodilisi kontrolle ja nende sagedust. Muudatusi saab siin teha samamoodi
nagu eespool kirjeldatud kaartidel.</p><div class="mediaobject"><img src="images/msecgui5.png"/></div></div><div class="section" title="Erandite kaart"><div class="titlepage"><div><div><h5 class="title"><a id="d4e3175"><!----></a>Erandite kaart</h5></div></div></div><p>Mõnikord käivad hoiatused hästi teada ja soovitud olukorra kohta. Sel juhul
ei ole neil tegelikult mõtet ja nad vaid raiskavad administraatori
aega. Sellel kaardil saab luua nii palju erandeid kui vaja, et vältida
tarbetuid turbehoiatusi. Enesest mõista on see kaart mseci esmakäivitusel
tühi. Allpool oleval pildil on näha neli erandit.</p><div class="mediaobject"><img src="images/msecgui6.png"/></div><p>Erandi loomiseks tuleb klõpsata nupule <span class="guibutton">Lisa reegel</span>.</p><div class="mediaobject"><img src="images/msecgui7.png"/></div><p>Valige vajalik perioodiline kontroll ripploendist
<span class="guilabel">Kontroll</span> ja kirjutage erand tekstikasti
<span class="guilabel">Erand</span>. Erandi lisamine ei ole mõistagi midagi jäävat:
selle võib kustutada <span class="guilabel">erandite</span> kaardil klõpsuga nupule
<span class="guibutton">Kustuta</span>, samuti võib seda topeltklõpsuga muuta.</p></div><div class="section" title="Õiguste kaart"><div class="titlepage"><div><div><h5 class="title"><a id="d4e3191"><!----></a>Õiguste kaart</h5></div></div></div><p>Sellel kaardil saab kontrollida ja jõustada failide ja kataloogide õigusi.</p><p>Nagu turvalisuse puhul, kasutab msec ka õiguste puhul mitmesuguseid tasemeid
(standard, secure jne), mida kehtestatakse vastavalt valitud
turbetasemele. Soovi korral saab luua omaenda õigustetasemeid, salvestades
need faili <code class="filename">perm.&lt;tasemenimi&gt;</code> kataloogis
<code class="filename">etc/security/msec/</code>. See võimalus on mõeldud väga
kogenud kasutajatele, kel läheb tarvis kohandatud seadistust. Samuti saab
siinsamas kaardil muuta õigusi just selliseks nagu vaja. Kehtiv seadustus on
salvestatud faili <code class="filename">/etc/security/msec/perms.conf.</code> Selles
leiab loetelu kõigist õiguste muudatustest.</p><div class="mediaobject"><img src="images/msecgui8.png"/></div><p>Vaikimisi õigusi kuvatakse reeglite loendina (üks reegel rea kohta). Alates
vasakult antakse teada reegliga hõlmatud fail või kataloog, seejärel selle
omanik, grupp ja lõpuks õigused. Kui reegli puhul</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>kastike <span class="guilabel">Jõuga kehtestamine</span> ei ole märgitud, kontrollib
msec ainult seda, kas reeglis määratud õigused kehtivad, ning saadab
turvahoiatuse, kui see nii pole, aga ei muuda ise midagi.</p></li><li class="listitem"><p>kui kastike <span class="guilabel">Jõuga kehtestamine</span> on märgitud, kontrollib
msec esimese perioodilise kontrolli ajal õiguste vastavust reeglile ning
kirjutab need erinevuse korral üle.</p></li></ul></div><div class="important" title="Oluline" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Oluline</h3><p>Et see toimiks, peab <span class="bold"><strong>perioodiliste kontrollide
kaardil</strong></span> olema valik CHECK_PERMS sobivalt seadistatud.</p></div><p>Uue reegli loomiseks klõpsake nupule <span class="guibutton">Lisa reegel</span> ja
täitke väljad, nagu näha alloleval pildil. Väljal <span class="guilabel">Fail</span>
võib kasutada metamärki *. “current” tähendab, et midagi ei muudeta.</p><div class="mediaobject"><img src="images/msecgui9.png"/></div><p>Muudatuste jõustamiseks klõpsake nupule <span class="guibutton">Olgu</span> ning
kindlasti ärge unustage enne tööriistast väljumist kõiki muudatusi
salvestamast menüükäsuga <span class="guimenu">Fail -&gt; Salvesta seadistus</span>. Kui
olete seadistusi muutnud, annab msecgui võimaluse need enne salvestamist üle
vaadata. </p><div class="note" title="Märkus" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Märkus</h3><p>Reegleid võib samuti luua või muuta seadistustefaili
<code class="filename">/etc/security/msec/perms.conf</code> redigeerides.
    </p></div><div class="caution" title="Ettevaatust" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Ettevaatust</h3><p><span class="bold"><strong>Õiguste kaardil</strong></span> (või otse
seadistustefailis) tehtud muudatusi võetakse arvesse esimesel perioodilisel
kontrollil (vt valikut CHECK_PERMS <span class="bold"><strong>perioodiliste
kontrollide kaardil</strong></span>). Kui soovite, et neid kohe arvestataks,
kasutage käsureal administraatori õigustes käsku msecperms. Eelnevalt võib
anda käsu msecperms -p, millega saab teada õigused, mida msecperms muudab.</p></div><div class="caution" title="Ettevaatust" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Ettevaatust</h3><p>Pange kindlasti tähele, et kui muudate õigusi käsureal või failihalduris,
siis faili puhul, millel on <span class="bold"><strong>õiguste kaardil</strong></span>
ära märgitud kastike <span class="guilabel">Jõuga kehtestamine</span>, kirjutab
msecgui mõne aja pärast vanad õigused tagasi vastavalt valikutele
CHECK_PERMS ja CHECK_PERMS_ENFORCE <span class="bold"><strong>perioodiliste
kontrollide kaardil</strong></span>.</p></div></div></div><div class="footnotes"><br/><hr width="100" align="left"/><div class="footnote"><p><sup>[<a id="ftn.d4e3068" href="#d4e3068" class="para">43</a>] </sup>Tööriista saab käsurealt käivitada, kui anda administraatori õigustes käsk
<span class="bold"><strong>msecgui</strong></span>.</p></div></div></div><script xmlns="" type="text/javascript" src="main.js"><!----></script><hr xmlns=""/><div xmlns="" class="copyright">© Mageia</div><div xmlns="" class="license"><a href="index.html#CC_BY-SA">CC BY-SA 3.0</a></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="mcc-security.html">Eelmine</a> </td><td width="20%" align="center"><a accesskey="u" href="mcc-security.html">Üles</a></td><td width="40%" align="right"> <a accesskey="n" href="drakfirewall.html">Järgmine</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Koju</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation"><div id="tabs"><ul><li><a href="#treeDiv"><em>Sisukord</em></a></li><li><a href="#searchDiv"><em>Otsing</em></a></li></ul><div id="treeDiv"><img src="../../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"/><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file section"><a href="mcc-intro.html">Mageia juhtimiskeskuse käsiraamatust</a></span></li><li><span class="file section"><a href="software-management.html">Tarkvara haldamine</a></span><ul><li><span class="file section"><a href="rpmdrake.html">Tarkvara haldamine (paigaldamine ja eemaldamine)</a></span><ul><li><span class="file section"><a href="rpmdrake.html#rpmdrake-introduction">Rpmdrake'i sissejuhatus</a></span></li><li><span class="file section"><a href="rpmdrake.html#d4e65">Akna põhiosad</a></span></li><li><span class="file section"><a href="rpmdrake.html#d4e103">Olekuveerg</a></span></li><li><span class="file section"><a href="rpmdrake.html#d4e156">Sõltuvused</a></span></li></ul></li><li><span class="file section"><a href="MageiaUpdate.html">Tarkvara uuendamine</a></span></li><li><span class="file section"><a href="mgaapplet-config.html">Uuendamissageduse seadistamine</a></span></li><li><span class="file section"><a href="drakrpm-edit-media.html">Tarkvaraallikate seadistamine</a></span><ul><li><span class="file section"><a href="drakrpm-edit-media.html#d4e228">Veerud</a></span></li><li><span class="file section"><a href="drakrpm-edit-media.html#d4e260">Nupud paremal</a></span></li><li><span class="file section"><a href="drakrpm-edit-media.html#d4e274">Menüü</a></span></li></ul></li></ul></li><li><span class="file section"><a href="mcc-sharing.html">Failide jagamine</a></span><ul><li><span class="file section"><a href="drakwizard_proftpd.html">FTP seadistamine</a></span><ul><li><span class="file section"><a href="drakwizard_proftpd.html#d4e348">Mis on FTP?</a></span></li><li><span class="file section"><a href="drakwizard_proftpd.html#d4e354">FTP-serveri loomine tööriistaga drakwizard proftpd</a></span></li></ul></li><li><span class="file section"><a href="drakwizard_apache2.html">Veebiserveri seadistamine</a></span><ul><li><span class="file section"><a href="drakwizard_apache2.html#d4e409">Mis on veebiserver?</a></span></li><li><span class="file section"><a href="drakwizard_apache2.html#d4e412">Veebiserveri loomine tööriistaga drakwizard apache2</a></span></li></ul></li></ul></li><li><span class="file section"><a href="mcc-networkservices.html">Võrguteenused</a></span><ul><li><span class="file section"><a href="drakwizard_dhcp.html">DHCP seadistamine</a></span><ul><li><span class="file section"><a href="drakwizard_dhcp.html#d4e503">Mis on DHCP?</a></span></li><li><span class="file section"><a href="drakwizard_dhcp.html#d4e507">DHCP-serveri loomine tööriistaga drakwizard dhcp</a></span></li><li><span class="file section"><a href="drakwizard_dhcp.html#d4e551">Mida tehakse?</a></span></li></ul></li><li><span class="file section"><a href="drakwizard_bind.html">DNS seadistamine</a></span></li><li><span class="file section"><a href="drakwizard_squid.html">Puhverserveri seadistamine</a></span><ul><li><span class="file section"><a href="drakwizard_squid.html#d4e625">Mis on puhverserver?</a></span></li><li><span class="file section"><a href="drakwizard_squid.html#d4e628">Puhverserveri loomine tööriistaga drakwizard squid</a></span></li><li><span class="file section"><a href="drakwizard_squid.html#d4e701">Mida tehakse?</a></span></li></ul></li><li><span class="file section"><a href="drakwizard_ntp.html">Aja seadistamine</a></span><ul><li><span class="file section"><a href="drakwizard_ntp.html#d4e750">NTP-serveri loomine tööriistaga drakwizard ntp</a></span></li><li><span class="file section"><a href="drakwizard_ntp.html#d4e776">Mida tehakse?</a></span></li></ul></li><li><span class="file section"><a href="drakwizard_sshd.html">OpenSSH deemoni seadistamine</a></span><ul><li><span class="file section"><a href="drakwizard_sshd.html#d4e815">Mis on SSH?</a></span></li><li><span class="file section"><a href="drakwizard_sshd.html#d4e820">SSH-deemoni loomine tööriistaga drakwizard sshd</a></span></li></ul></li></ul></li><li><span class="file section"><a href="mcc-hardware.html">Riistvara</a></span><ul><li><span class="file section"><a href="harddrake2.html">Riistvara seadistamine</a></span><ul><li><span class="file section"><a href="harddrake2.html#d4e956">Aken</a></span></li><li><span class="file section"><a href="harddrake2.html#d4e971">Menüü</a></span></li></ul></li><li><span class="file section"><a href="draksound.html">Heli seadistamine</a></span></li><li><span class="file section"><a href="drak3d.html">Ruumilise töölaua efektid</a></span><ul><li><span class="file section"><a href="drak3d.html#d4e1022">Sissejuhatus</a></span></li><li><span class="file section"><a href="drak3d.html#d4e1028">Alustamine</a></span></li><li><span class="file section"><a href="drak3d.html#d4e1042">Probleemide lahendamine</a></span><ul><li><span class="file section"><a href="drak3d.html#d4e1044">Töölauda pole sisselogimise järel näha</a></span></li></ul></li></ul></li><li><span class="file section"><a href="XFdrake.html">Graafikaserveri seadistamine</a></span></li><li><span class="file section"><a href="keyboarddrake.html">Klaviatuuri seadistamine</a></span><ul><li><span class="file section"><a href="keyboarddrake.html#d4e1133">Sissejuhatus</a></span></li><li><span class="file section"><a href="keyboarddrake.html#d4e1139">Klaviatuuripaigutus</a></span></li><li><span class="file section"><a href="keyboarddrake.html#d4e1142">Klaviatuuritüüp</a></span></li></ul></li><li><span class="file section"><a href="mousedrake.html">Osutusseadme (hiir, puutepadi) seadistamine</a></span></li><li><span class="file section"><a href="system-config-printer.html">Printeri paigaldamine ja seadistamine</a></span><ul><li><span class="file section"><a href="system-config-printer.html#introduction">Sissejuhatus</a></span></li><li><span class="file section"><a href="system-config-printer.html#automatic">Printer tuvastati automaatselt</a></span></li><li><span class="file section"><a href="system-config-printer.html#non_automatic">Printerit ei tuvastatud automaatselt</a></span></li><li><span class="file section"><a href="system-config-printer.html#terminate">Paigaldamise lõpetamine</a></span></li><li><span class="file section"><a href="system-config-printer.html#network_printer">Võrguprinter</a></span></li><li><span class="file section"><a href="system-config-printer.html#network_printing_protocols">Trükkimise võrguprotokollid</a></span></li><li><span class="file section"><a href="system-config-printer.html#properties">Seadme omadused</a></span></li><li><span class="file section"><a href="system-config-printer.html#d4e1277">Probleemide lahendamine</a></span></li><li><span class="file section"><a href="system-config-printer.html#specificities">Spetsiifilised probleemid</a></span></li></ul></li><li><span class="file section"><a href="scannerdrake.html">Skanneri seadistamine</a></span><ul><li><span class="file section"><a href="scannerdrake.html#scannerinstallation">Paigaldamine</a></span></li><li><span class="file section"><a href="scannerdrake.html#scannersharing">Skanneri jagamine</a></span></li><li><span class="file section"><a href="scannerdrake.html#scannerspecifics">Spetsiifilised probleemid</a></span></li><li><span class="file section"><a href="scannerdrake.html#scannerextrasteps">Paigaldamise lisasammud</a></span></li></ul></li><li><span class="file section"><a href="drakups.html">Puhvertoiteallika (UPS) seadistamine</a></span></li></ul></li><li><span class="file section"><a href="mcc-network.html">Kohtvõrk ja internet</a></span><ul><li><span class="file section"><a href="draknetcenter.html">Võrgukeskus</a></span><ul><li><span class="file section"><a href="draknetcenter.html#d4e1504">Sissejuhatus</a></span></li><li><span class="file section"><a href="draknetcenter.html#d4e1534">Nupp Jälgi</a></span></li><li><span class="file section"><a href="draknetcenter.html#d4e1545">Nupp Seadista</a></span></li><li><span class="file section"><a href="draknetcenter.html#d4e1604">Nupp Muud seadistused</a></span></li></ul></li><li><span class="file section"><a href="drakconnect.html">Uue võrguliidese seadistamine (LAN, ISDN, ADSL...)</a></span><ul><li><span class="file section"><a href="drakconnect.html#d4e1619">Sissejuhatus</a></span></li><li><span class="file section"><a href="drakconnect.html#d4e1626">Uus juhtmega ühendus (Ethernet)</a></span></li><li><span class="file section"><a href="drakconnect.html#d4e1680">Uus satelliidiühendus (DVB)</a></span></li><li><span class="file section"><a href="drakconnect.html#d4e1684">Uus kaablimodemi ühendus</a></span></li><li><span class="file section"><a href="drakconnect.html#d4e1742">Uus DSL-ühendus</a></span></li><li><span class="file section"><a href="drakconnect.html#d4e1778">Uus ISDN-ühendus</a></span></li><li><span class="file section"><a href="drakconnect.html#d4e1827">Uus juhtmeta ühendus (WiFi)</a></span></li><li><span class="file section"><a href="drakconnect.html#d4e1909">Uus GPRS/Edge/3G ühendus</a></span></li><li><span class="file section"><a href="drakconnect.html#d4e1935">Uus Bluetoothi sissehelistamisühendus</a></span></li><li><span class="file section"><a href="drakconnect.html#d4e1939">Uus analoogtelefonimodemi ühendus (POTS)</a></span></li><li><span class="file section"><a href="drakconnect.html#drakconnect-end">Seadistamise lõpetamine</a></span></li></ul></li><li><span class="file section"><a href="drakconnect--del.html">Ühenduse eemaldamine</a></span></li><li><span class="file section"><a href="drakproxy.html">Puhverserver</a></span></li><li><span class="file section"><a href="drakgw.html">Internetiühenduse jagamine teistele kohalikele masinatele</a></span><ul><li><span class="file section"><a href="drakgw.html#drakgw-principles">Põhialused</a></span></li><li><span class="file section"><a href="drakgw.html#drakgw-wizard">Interneti jagamise nõustaja</a></span></li><li><span class="file section"><a href="drakgw.html#drakgw-configure">Kliendi seadistamine</a></span></li><li><span class="file section"><a href="drakgw.html#drakgw-stop">Ühenduse jagamise peatamine</a></span></li></ul></li><li><span class="file section"><a href="draknetprofile.html">Võrguprofiilide haldamine</a></span></li><li><span class="file section"><a href="drakvpn.html">VPN-ühenduse seadistamine</a></span><ul><li><span class="file section"><a href="drakvpn.html#d4e2114">Sissejuhatus</a></span></li><li><span class="file section"><a href="drakvpn.html#d4e2120">Seadistamine</a></span></li></ul></li><li><span class="file section"><a href="drakhosts.html">Masinate määratlemine</a></span></li></ul></li><li><span class="file section"><a href="mcc-system.html">Süsteem</a></span><ul><li><span class="file section"><a href="drakauth.html">Autentimine</a></span></li><li><span class="file section"><a href="drakxservices.html">Süsteemi teenuste haldamine</a></span></li><li><span class="file section"><a href="drakfont.html">Fontide haldamine, lisamine ja eemaldamine. Windows(TM) fontide import</a></span></li><li><span class="file section"><a href="drakclock.html">Kuupäeva ja kellaaja seadistamine</a></span></li><li><span class="file section"><a href="localedrake.html">Süsteemi lokaliseerimine</a></span><ul><li><span class="file section"><a href="localedrake.html#input_method">Sisestusmeetod</a></span></li></ul></li><li><span class="file section"><a href="logdrake.html">Süsteemi logifailide vaatamine ja neis otsimine</a></span><ul><li><span class="file section"><a href="logdrake.html#d4e2333">Logides otsimine</a></span></li><li><span class="file section"><a href="logdrake.html#d4e2348">E-kirjaga hoiatuse saatmise seadistamine</a></span></li></ul></li><li><span class="file section"><a href="drakconsole.html">Konsooli avamine administraatorina</a></span></li><li><span class="file section"><a href="userdrake.html">Kasutajad ja grupid</a></span></li><li><span class="file section"><a href="transfugdrake.html">Windows(TM) dokumentide ja seadistuste import</a></span></li><li><span class="file section"><a href="draksnapshot-config.html">Hetktõmmised</a></span></li></ul></li><li><span class="file section"><a href="mcc-networksharing.html">Võrgu jagamine</a></span><ul><li><span class="file section"><a href="diskdrake--smb.html">Windowsi (SMB) jagatud ketaste ja kataloogide kasutamine</a></span><ul><li><span class="file section"><a href="diskdrake--smb.html#d4e2616">Sissejuhatus</a></span></li><li><span class="file section"><a href="diskdrake--smb.html#d4e2624">Kasutamine</a></span></li></ul></li><li><span class="file section"><a href="draksambashare.html">Kataloogide ja ketaste jagamine Sambaga</a></span><ul><li><span class="file section"><a href="draksambashare.html#d4e2657">Sissejuhatus</a></span></li><li><span class="file section"><a href="draksambashare.html#d4e2660">Valmistumine</a></span></li><li><span class="file section"><a href="draksambashare.html#d4e2665">Nõustaja - autonoomne server</a></span></li><li><span class="file section"><a href="draksambashare.html#d4e2708">Nõustaja - primaarne domeenikontroller</a></span></li><li><span class="file section"><a href="draksambashare.html#d4e2718">Kataloogi määramine jagatud ressursiks</a></span></li><li><span class="file section"><a href="draksambashare.html#d4e2731">Menüükirjed</a></span></li><li><span class="file section"><a href="draksambashare.html#d4e2747">Printerite jagamine</a></span></li><li><span class="file section"><a href="draksambashare.html#d4e2754">Samba kasutajad</a></span></li></ul></li><li><span class="file section"><a href="diskdrake--nfs.html">NFS-i jagatud ketaste ja kataloogide kasutamine</a></span><ul><li><span class="file section"><a href="diskdrake--nfs.html#d4e2771">Sissejuhatus</a></span></li><li><span class="file section"><a href="diskdrake--nfs.html#d4e2777">Kasutamine</a></span></li></ul></li><li><span class="file section"><a href="draknfs.html">Ketaste ja kataloogide jagamine NFS-i abil</a></span><ul><li><span class="file section"><a href="draknfs.html#d4e2812">Eelnevad nõuded</a></span></li><li><span class="file section"><a href="draknfs.html#d4e2821">Peaaken</a></span></li><li><span class="file section"><a href="draknfs.html#d4e2825">Kirje muutmine</a></span><ul><li><span class="file section"><a href="draknfs.html#d4e2832">NFS-kataloog</a></span></li><li><span class="file section"><a href="draknfs.html#d4e2836">Masina ligipääs</a></span></li><li><span class="file section"><a href="draknfs.html#d4e2848">Kasutaja ID sidumine</a></span></li><li><span class="file section"><a href="draknfs.html#d4e2858">Muud valikud</a></span></li></ul></li><li><span class="file section"><a href="draknfs.html#d4e2868">Menüükirjed</a></span><ul><li><span class="file section"><a href="draknfs.html#d4e2874">Fail|Salvesta konfiguratsioon</a></span></li><li><span class="file section"><a href="draknfs.html#d4e2877">NFS-server|Käivita uuesti</a></span></li><li><span class="file section"><a href="draknfs.html#d4e2880">NFS-server|Laadi uuesti</a></span></li></ul></li></ul></li><li><span class="file section"><a href="diskdrake--dav.html">WebDAV-i jagatud ketaste ja kataloogide kasutamine</a></span><ul><li><span class="file section"><a href="diskdrake--dav.html#d4e2895">Sissejuhatus</a></span></li><li><span class="file section"><a href="diskdrake--dav.html#d4e2899">Uue kirje loomine</a></span></li></ul></li></ul></li><li><span class="file section"><a href="mcc-localdisks.html">Kohalikud kettad</a></span><ul><li><span class="file section"><a href="drakdisk.html">Kettapartitsioonide haldamine</a></span></li><li><span class="file section"><a href="diskdrake--removable.html">CD/DVD-kirjuti</a></span><ul><li><span class="file section"><a href="diskdrake--removable.html#d4e2989">Haakepunkt</a></span></li><li><span class="file section"><a href="diskdrake--removable.html#d4e2993">Eelistused</a></span><ul><li><span class="file section"><a href="diskdrake--removable.html#d4e2998">user/nouser</a></span></li></ul></li></ul></li><li><span class="file section"><a href="diskdrake--fileshare.html">Kõvaketta partitsioonide jagamine</a></span></li></ul></li><li><span class="file section"><a href="mcc-security.html">Turvalisus</a></span><ul><li id="webhelp-currentid"><span class="file section"><a href="msecgui.html">MSEC: süsteemi turvalisus ja audit</a></span><ul><li><span class="file section"><a href="msecgui.html#d4e3065">Tutvustus</a></span></li><li><span class="file section"><a href="msecgui.html#d4e3077">Ülevaate kaart</a></span></li><li><span class="file section"><a href="msecgui.html#d4e3095">Turbeseadistuste kaart</a></span><ul><li><span class="file section"><a href="msecgui.html#d4e3102">Põhiseadistuste kaart</a></span></li><li><span class="file section"><a href="msecgui.html#d4e3144">Süsteemi turvalisuse kaart</a></span></li><li><span class="file section"><a href="msecgui.html#d4e3161">Võrguturvalisuse kaart</a></span></li><li><span class="file section"><a href="msecgui.html#d4e3167">Perioodiliste kontrollide kaart</a></span></li><li><span class="file section"><a href="msecgui.html#d4e3175">Erandite kaart</a></span></li><li><span class="file section"><a href="msecgui.html#d4e3191">Õiguste kaart</a></span></li></ul></li></ul></li><li><span class="file section"><a href="drakfirewall.html">Isikliku tulemüüri seadistamine</a></span></li><li><span class="file section"><a href="draksec.html">Mageia tööriistade autentimise seadistamine</a></span></li><li><span class="file section"><a href="drakinvictus.html">Võrguliideste ja tulemüüri põhjalikum seadistamine</a></span></li><li><span class="file section"><a href="drakguard.html">Lapselukk</a></span><ul><li><span class="file section"><a href="drakguard.html#d4e3321">Tutvustus</a></span></li><li><span class="file section"><a href="drakguard.html#d4e3331">Lapseluku seadistamine</a></span><ul><li><span class="file section"><a href="drakguard.html#d4e3348">Musta ja valge nimekirja kaardid</a></span></li><li><span class="file section"><a href="drakguard.html#d4e3352">Programmide blokeerimise kaart</a></span></li></ul></li></ul></li></ul></li><li><span class="file section"><a href="mcc-boot.html">Algkäivitus</a></span><ul><li><span class="file section"><a href="drakboot.html">Automaatse sisselogimise lubamine</a></span></li><li><span class="file section"><a href="drakboot--boot.html">Süsteemi käivitumise seadistamine</a></span></li><li><span class="file section"><a href="drakedm.html">Kuvahalduri seadistamine</a></span></li></ul></li><li><span class="file section"><a href="otherMageiaTools.html">Muud Mageia tööriistad</a></span><ul><li><span class="file section"><a href="drakbug.html">Mageia veateadete tööriist</a></span></li><li><span class="file section"><a href="drakbug_report.html">Logide ja süsteemiteabe kogumine veateate tarbeks</a></span></li><li><span class="file section"><a href="lsnetdrake.html">Saadaolevate NFS- ja SMB-ressursside leidmine</a></span></li><li><span class="file section"><a href="lspcidrake.html">PCI, USB ja PCMCIA teabe leidmine</a></span></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm"><fieldset class="searchFieldSet"><legend>Otsing</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText"/> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch"/></center></fieldset></form></div><div id="searchResults"><center/></div></div></div></div></div></body></html>
8' href='#n998'>998</a>
<a id='n999' href='#n999'>999</a>
<a id='n1000' href='#n1000'>1000</a>
<a id='n1001' href='#n1001'>1001</a>
<a id='n1002' href='#n1002'>1002</a>
<a id='n1003' href='#n1003'>1003</a>
<a id='n1004' href='#n1004'>1004</a>
<a id='n1005' href='#n1005'>1005</a>
<a id='n1006' href='#n1006'>1006</a>
<a id='n1007' href='#n1007'>1007</a>
<a id='n1008' href='#n1008'>1008</a>
<a id='n1009' href='#n1009'>1009</a>
<a id='n1010' href='#n1010'>1010</a>
<a id='n1011' href='#n1011'>1011</a>
<a id='n1012' href='#n1012'>1012</a>
<a id='n1013' href='#n1013'>1013</a>
<a id='n1014' href='#n1014'>1014</a>
<a id='n1015' href='#n1015'>1015</a>
<a id='n1016' href='#n1016'>1016</a>
<a id='n1017' href='#n1017'>1017</a>
<a id='n1018' href='#n1018'>1018</a>
<a id='n1019' href='#n1019'>1019</a>
<a id='n1020' href='#n1020'>1020</a>
<a id='n1021' href='#n1021'>1021</a>
<a id='n1022' href='#n1022'>1022</a>
<a id='n1023' href='#n1023'>1023</a>
<a id='n1024' href='#n1024'>1024</a>
<a id='n1025' href='#n1025'>1025</a>
<a id='n1026' href='#n1026'>1026</a>
<a id='n1027' href='#n1027'>1027</a>
<a id='n1028' href='#n1028'>1028</a>
<a id='n1029' href='#n1029'>1029</a>
<a id='n1030' href='#n1030'>1030</a>
<a id='n1031' href='#n1031'>1031</a>
<a id='n1032' href='#n1032'>1032</a>
<a id='n1033' href='#n1033'>1033</a>
<a id='n1034' href='#n1034'>1034</a>
<a id='n1035' href='#n1035'>1035</a>
<a id='n1036' href='#n1036'>1036</a>
<a id='n1037' href='#n1037'>1037</a>
<a id='n1038' href='#n1038'>1038</a>
<a id='n1039' href='#n1039'>1039</a>
<a id='n1040' href='#n1040'>1040</a>
<a id='n1041' href='#n1041'>1041</a>
<a id='n1042' href='#n1042'>1042</a>
<a id='n1043' href='#n1043'>1043</a>
<a id='n1044' href='#n1044'>1044</a>
<a id='n1045' href='#n1045'>1045</a>
<a id='n1046' href='#n1046'>1046</a>
<a id='n1047' href='#n1047'>1047</a>
<a id='n1048' href='#n1048'>1048</a>
<a id='n1049' href='#n1049'>1049</a>
<a id='n1050' href='#n1050'>1050</a>
<a id='n1051' href='#n1051'>1051</a>
<a id='n1052' href='#n1052'>1052</a>
<a id='n1053' href='#n1053'>1053</a>
<a id='n1054' href='#n1054'>1054</a>
<a id='n1055' href='#n1055'>1055</a>
<a id='n1056' href='#n1056'>1056</a>
<a id='n1057' href='#n1057'>1057</a>
<a id='n1058' href='#n1058'>1058</a>
<a id='n1059' href='#n1059'>1059</a>
<a id='n1060' href='#n1060'>1060</a>
<a id='n1061' href='#n1061'>1061</a>
<a id='n1062' href='#n1062'>1062</a>
<a id='n1063' href='#n1063'>1063</a>
<a id='n1064' href='#n1064'>1064</a>
<a id='n1065' href='#n1065'>1065</a>
<a id='n1066' href='#n1066'>1066</a>
<a id='n1067' href='#n1067'>1067</a>
<a id='n1068' href='#n1068'>1068</a>
<a id='n1069' href='#n1069'>1069</a>
<a id='n1070' href='#n1070'>1070</a>
<a id='n1071' href='#n1071'>1071</a>
<a id='n1072' href='#n1072'>1072</a>
<a id='n1073' href='#n1073'>1073</a>
<a id='n1074' href='#n1074'>1074</a>
<a id='n1075' href='#n1075'>1075</a>
<a id='n1076' href='#n1076'>1076</a>
<a id='n1077' href='#n1077'>1077</a>
<a id='n1078' href='#n1078'>1078</a>
<a id='n1079' href='#n1079'>1079</a>
<a id='n1080' href='#n1080'>1080</a>
<a id='n1081' href='#n1081'>1081</a>
<a id='n1082' href='#n1082'>1082</a>
<a id='n1083' href='#n1083'>1083</a>
<a id='n1084' href='#n1084'>1084</a>
<a id='n1085' href='#n1085'>1085</a>
</pre></td>
<td class='lines'><pre><code><span class="hl kwa">package</span> lang<span class="hl opt">;</span> <span class="hl slc"># $Id$</span>

<span class="hl kwa">use</span> diagnostics<span class="hl opt">;</span>
<span class="hl kwa">use</span> strict<span class="hl opt">;</span>
<span class="hl kwa">use</span> common<span class="hl opt">;</span>
<span class="hl kwa">use</span> <span class="hl kwc">log</span><span class="hl opt">;</span>

<span class="hl slc">#- key: lang name (locale name for some (~5) special cases needing</span>
<span class="hl slc">#-      extra distinctions)</span>
<span class="hl slc">#- [0]: lang name in english</span>
<span class="hl slc">#- [1]: transliterated locale name in the locale name (used for sorting)</span>
<span class="hl slc">#- [2]: default locale name to use for that language if there isn&apos;t</span>
<span class="hl slc">#-      an existing locale for the combination language+country choosen</span>
<span class="hl slc">#- [3]: geographic groups that this language belongs to (for displaying</span>
<span class="hl slc">#-      in the menu grouped in smaller lists), 1=Europe, 2=Asia, 3=Africa,</span>
<span class="hl slc">#-      4=Oceania&amp;Pacific, 5=America (if you wonder, it&apos;s the order</span>
<span class="hl slc">#-      used in the olympic flag)</span>
<span class="hl slc">#- [4]: special value for LANGUAGE variable (if different of the default</span>
<span class="hl slc">#-      of &apos;ll_CC:ll_DD:ll&apos; (ll_CC: locale (if exist) resulting of the</span>
<span class="hl slc">#-      combination of chosen lang (ll) and country (CC), ll_DD: the</span>
<span class="hl slc">#-      default locale shown here (field [2]) and ll: the language (the key))</span>
<span class="hl kwc">my</span> <span class="hl kwb">%langs</span> <span class="hl opt">= (</span>
<span class="hl str">&apos;af&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Afrikaans&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Afrikaans&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;af_ZA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;  3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;am&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Amharic&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;ZZ emarNa&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;am_ET&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;  3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_am&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#- doesn&apos;t work well after install</span>
<span class="hl slc">#&apos;ar&apos; =&gt;    [ &apos;Arabic&apos;,              &apos;AA Arabic&apos;,         &apos;ar_EG&apos;, &apos; 23  &apos;, &apos;utf_ar&apos; ],</span>
<span class="hl str">&apos;az&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Azeri (Latin)&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;Azerbaycanca&apos;</span><span class="hl opt">,</span>      <span class="hl str">&apos;az_AZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_az&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;be&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Belarussian&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;Belaruskaya&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;be_BY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;cp1251&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;bg&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Bulgarian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Blgarski&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;bg_BG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;cp1251&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;bn&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Bengali&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;ZZ Bengali&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;bn_BD&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;br&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Britton&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Brezhoneg&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;br_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;br:fr_FR:fr&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;bs&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Bosnian&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Bosanski&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;bs_BA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ca&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Catalan&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Catala&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ca_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ca:es_ES:es&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;cs&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Czech&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Cestina&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;cs_CZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;cy&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Welsh&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Cymraeg&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;cy_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_lat8&apos;</span><span class="hl opt">,</span>    <span class="hl str">&apos;cy:en_GB:en&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;da&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Danish&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Dansk&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;da_DK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;de&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;German&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Deutsch&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;de_DE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;el&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Greek&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Ellynika&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;el_GR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-7&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;en_GB&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;English (British)&apos;</span><span class="hl opt">,</span>   <span class="hl str">&apos;English (British)&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;12345&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;en_US&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;English (American)&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;English (American)&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;    5&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;C&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;eo&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Esperanto&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Esperanto&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;eo_XX&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;12345&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;es&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Spanish&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Espanol&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;es_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1 3 5&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;et&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Estonian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Eesti&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;et_EE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;eu&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Euskara (Basque)&apos;</span><span class="hl opt">,</span>    <span class="hl str">&apos;Euskara&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;eu_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;fa&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Farsi (Iranian)&apos;</span><span class="hl opt">,</span>     <span class="hl str">&apos;AA Farsi&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;fa_IR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_ar&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;fi&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Finnish (Suomi)&apos;</span><span class="hl opt">,</span>     <span class="hl str">&apos;Suomi&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;fi_FI&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#&apos;fo&apos; =&gt;   [ &apos;Faroese&apos;,             &apos;Foroyskt&apos;,          &apos;fo_FO&apos;, &apos;1    &apos;, &apos;iso-8859-1&apos; ],</span>
<span class="hl str">&apos;fr&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;French&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Francais&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1 345&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ga&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Gaelic (Irish)&apos;</span><span class="hl opt">,</span>      <span class="hl str">&apos;Gaeilge&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;ga_IE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ga:en_IE:en_GB:en&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#&apos;gd&apos; =&gt;   [ &apos;Gaelic (Scottish)&apos;,   &apos;Gaidhlig&apos;,          &apos;gb_GB&apos;, &apos;1    &apos;, &apos;utf_lat8&apos;,    &apos;gd:en_GB:en&apos; ],</span>
<span class="hl str">&apos;gl&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Galician&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Galego&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;gl_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;gl:es_ES:es:pt:pt_BR&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#&apos;gv&apos; =&gt;   [ &apos;Gaelic (Manx)&apos;,       &apos;Gaelg&apos;,             &apos;gv_GB&apos;, &apos;1    &apos;, &apos;utf_lat8&apos;,    &apos;gv:en_GB:en&apos; ],</span>
<span class="hl str">&apos;he&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Hebrew&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;AA Ivrit&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;he_IL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_he&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;hi&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Hindi&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;ZZ Hindi&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;hi_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;hr&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Croatian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Hrvatski&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;hr_HR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;hu&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Hungarian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Magyar&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;hu_HU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;hy&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Armenian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ZZ Armenian&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;hy_AM&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_hy&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#&apos;ia&apos; =&gt;   [ &apos;Interlingua&apos;,         &apos;Interlingua&apos;,       &apos;ia_XX&apos;, &apos;1   5&apos;, &apos;utf8&apos; ],</span>
<span class="hl str">&apos;id&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Indonesian&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;Bahasa Indonesia&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;id_ID&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;is&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Icelandic&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Islenska&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;is_IS&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;it&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Italian&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Italiano&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;it_IT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;iu&apos; =&gt;  [ &apos;Inuktitut&apos;,           &apos;ZZ Inuktitut&apos;,      &apos;iu_CA&apos;, &apos;    5&apos;, &apos;utf_iu&apos; ],</span>
<span class="hl str">&apos;ja&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Japanese&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ZZ Nihongo&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;ja_JP&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;jisx0208&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ka&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Georgian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ZZ Georgian&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;ka_GE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_ka&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;kl&apos; =&gt;  [ &apos;Greenlandic (inuit)&apos;, &apos;ZZ Inuit&apos;,          &apos;kl_GL&apos;, &apos;    5&apos;, &apos;iso-8859-1&apos; ],</span>
<span class="hl str">&apos;kn&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Kannada&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;ZZ Kannada&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;kn_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ko&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Korean&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;ZZ Korea&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;ko_KR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ksc5601&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;kw&apos; =&gt;  [ &apos;Cornish&apos;,             &apos;Kernewek&apos;,          &apos;kw_GB&apos;, &apos;1    &apos;, &apos;utf_lat8&apos;,    &apos;kw:en_GB:en&apos; ],</span>
<span class="hl str">&apos;lo&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Laotian&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Laotian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;lo_LA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_lo&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;lt&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Lithuanian&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;Lietuviskai&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;lt_LT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-13&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;lv&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Latvian&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Latviesu&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;lv_LV&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-13&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;mi&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Maori&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Maori&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;mi_NZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;   4 &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;mk&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Macedonian&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;Makedonski&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;mk_MK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_cyr1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;mn&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Mongolian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Mongol&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;mn_MN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_cyr2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ms&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Malay&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Bahasa Melayu&apos;</span><span class="hl opt">,</span>     <span class="hl str">&apos;ms_MY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;mt&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Maltese&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Maltin&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;mt_MT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1 3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;nb&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Norwegian Bokmaal&apos;</span><span class="hl opt">,</span>   <span class="hl str">&apos;Norsk, Bokmal&apos;</span><span class="hl opt">,</span>     <span class="hl str">&apos;no_NO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;nb:no&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;nl&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Dutch&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Nederlands&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;nl_NL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;nn&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Norwegian Nynorsk&apos;</span><span class="hl opt">,</span>   <span class="hl str">&apos;Norsk, Nynorsk&apos;</span><span class="hl opt">,</span>    <span class="hl str">&apos;nn_NO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;nn:no</span><span class="hl ipl">&#64;nynorsk</span><span class="hl str">:no_NY:no:nb&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;oc&apos; =&gt;  [ &apos;Occitan&apos;,             &apos;Occitan&apos;,           &apos;oc_FR&apos;, &apos;1    &apos;, &apos;iso-8859-1&apos;,  &apos;oc:fr_FR:fr&apos; ],</span>
<span class="hl slc">#-&apos;ph&apos; =&gt;  [ &apos;Pilipino&apos;,            &apos;Pilipino&apos;,          &apos;ph_PH&apos;, &apos; 2   &apos;, &apos;iso-8859-1&apos;,  &apos;ph:tl&apos; ],</span>
<span class="hl str">&apos;pl&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Polish&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Polski&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;pl_PL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;pt&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Portuguese&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;Portugues&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1 3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;pt_PT:pt:pt_BR&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;pt_BR&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;Portuguese Brazil&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;Portugues do Brasil&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;pt_BR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;    5&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;pt_BR:pt_PT:pt&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ro&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Romanian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Romana&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ro_RO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ru&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Russian&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Russkij&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;ru_RU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;12   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;koi8-r&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;sh&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Serbian Latin&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;Srpska&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;sh_YU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;sh:sr</span><span class="hl ipl">&#64;Latn</span><span class="hl str">&apos;</span> <span class="hl opt">],</span> 
<span class="hl str">&apos;sk&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Slovak&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Slovencina&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;sk_SK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;sl&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Slovenian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Slovenscina&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;sl_SI&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;sq&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Albanian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Shqip&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;sq_AL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span> 
<span class="hl str">&apos;sr&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Serbian Cyrillic&apos;</span><span class="hl opt">,</span>    <span class="hl str">&apos;Srpska&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;sr_YU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-5&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;sp:sr&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;sv&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Swedish&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Svenska&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;sv_SE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ta&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Tamil&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;ZZ Tamil&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;ta_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_ta&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;tg&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Tajik&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Tojiki&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;tg_TJ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_cyr2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;th&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Thai&apos;</span><span class="hl opt">,</span>                <span class="hl str">&apos;ZZ Thai&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;th_TH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;tis620&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;tr&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Turkish&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Turkce&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;tr_TR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-9&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;tt&apos; =&gt;  [ &apos;Tatar&apos;,               &apos;Tatar&apos;,             &apos;tt_RU&apos;, &apos; 2   &apos;, &apos;utf_cyr2&apos; ],</span>
<span class="hl str">&apos;uk&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Ukrainian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Ukrayinska&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;uk_UA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;koi8-u&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;ur&apos; =&gt;  [ &apos;Urdu&apos;,                &apos;AA Urdu&apos;,           &apos;ur_PK&apos;, &apos; 2   &apos;, &apos;utf_ar&apos; ],  </span>
<span class="hl str">&apos;uz&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Uzbek&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Ozbekcha&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;uz_UZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;vi&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Vietnamese&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;Tieng Viet&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;vi_VN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_vi&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;wa&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Walon&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Walon&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;wa_BE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;wa:fr_BE:fr&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#- Xhosa locale (xh_ZA) is not yet available, using en_ZA instead,</span>
<span class="hl slc">#- and defining a LANGUAGE variable</span>
<span class="hl slc">#waiting for lang-xh.png, it has kde trans.</span>
<span class="hl slc">#-&apos;xh&apos; =&gt;  [ &apos;Xhosa&apos;,               &apos;IsiXhosa&apos;,          &apos;xh_ZA&apos;, &apos;  3  &apos;, &apos;iso-8859-1&apos;, &apos;xh:en_ZA&apos; ],</span>
<span class="hl slc">#-&apos;yi&apos; =&gt;  [ &apos;Yiddish&apos;,             &apos;AA Yidish&apos;,         &apos;yi_US&apos;, &apos;1   5&apos;, &apos;utf_he&apos; ],</span>
<span class="hl str">&apos;zh_CN&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;Chinese Simplified&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;ZZ ZhongWen&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;zh_CN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;gb2312&apos;</span><span class="hl opt">,</span>      <span class="hl str">&apos;zh_CN.GB2312:zh_CN:zh&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;zh_TW&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;Chinese Traditional&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ZZ ZhongWen&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;zh_TW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;Big5&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;zh_TW.Big5:zh_TW:zh_HK:zh&apos;</span> <span class="hl opt">],</span>
<span class="hl opt">);</span>
<span class="hl kwa">sub</span> l2name           <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">0</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> l2transliterated <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">1</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> l2locale         <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">2</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> l2location <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">%geo</span> <span class="hl opt">= (</span><span class="hl num">1</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Europe&apos;</span><span class="hl opt">,</span> <span class="hl num">2</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Asia&apos;</span><span class="hl opt">,</span> <span class="hl num">3</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Africa&apos;</span><span class="hl opt">,</span> <span class="hl num">4</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Oceania/Pacific&apos;</span><span class="hl opt">,</span> <span class="hl num">5</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;America&apos;</span><span class="hl opt">);</span>
    <span class="hl kwc">map</span> <span class="hl opt">{</span> if_<span class="hl opt">(</span><span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">3</span><span class="hl opt">] =~</span> <span class="hl kwb">$_, $geo</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">}) }</span> <span class="hl num">1</span><span class="hl opt">.</span><span class="hl num">.5</span><span class="hl opt">;</span>
<span class="hl opt">}</span>
<span class="hl kwa">sub</span> l2charset        <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">4</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> l2language       <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">5</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> list_langs <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">%options</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;l</span> <span class="hl opt">=</span> <span class="hl kwc">keys</span> <span class="hl kwb">%langs</span><span class="hl opt">;</span>
    <span class="hl kwb">$options</span><span class="hl opt">{</span>exclude_non_installed<span class="hl opt">}</span> ? <span class="hl kwc">grep</span> <span class="hl opt">{ -</span>e <span class="hl str">&quot;/usr/share/locale/&quot;</span><span class="hl opt">.</span>l2locale<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">).</span><span class="hl str">&quot;/LC_CTYPE&quot;</span> <span class="hl opt">}</span> <span class="hl kwb">&#64;l</span> <span class="hl opt">:</span> <span class="hl kwb">&#64;l</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> text_direction_rtl<span class="hl opt">() {</span> N<span class="hl opt">(</span><span class="hl str">&quot;default:LTR&quot;</span><span class="hl opt">)</span> <span class="hl kwc">eq</span> <span class="hl str">&quot;default:RTL&quot;</span> <span class="hl opt">}</span>


<span class="hl slc">#- key: country name (that should be YY in xx_YY locale)</span>
<span class="hl slc">#- [0]: country name in natural language</span>
<span class="hl slc">#- [1]: default locale for that country </span>
<span class="hl slc">#- [2]: geographic groups that this country belongs to (for displaying</span>
<span class="hl slc">#-      in the menu grouped in smaller lists), 1=Europe, 2=Asia, 3=Africa,</span>
<span class="hl slc">#-      4=Oceania&amp;Pacific, 5=America (if you wonder, it&apos;s the order</span>
<span class="hl slc">#-      used in the olympic flag)</span>
<span class="hl slc">#-</span>
<span class="hl slc">#- Note: for countries for which a glibc locale don&apos;t exist (yet) I tried to</span>
<span class="hl slc">#- put a locale that makes sense; and a &apos;#&apos; at the end of the line to show</span>
<span class="hl slc">#- the locale is not the &quot;correct&quot; one. &apos;en_US&apos; is used when no good choice</span>
<span class="hl slc">#- is available.</span>
<span class="hl kwc">my</span> <span class="hl kwb">%countries</span> <span class="hl opt">= (</span>
<span class="hl str">&apos;AF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Afghanistan&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Andorra&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ca_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;United Arab Emirates&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;ar_AE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Antigua and Barbuda&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Anguilla&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Albania&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;sq_AL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Armenia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;hy_AM&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Netherlands Antilles&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Angola&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AQ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Antarctica&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Argentina&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;es_AR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;American Samoa&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Austria&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;de_AT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Australia&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_AU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Aruba&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Azerbaijan&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;az_AZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bosnia and Herzegovina&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;bs_BA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BB&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Barbados&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bangladesh&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;bn_BD&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Belgium&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;fr_BE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Burkina Faso&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bulgaria&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;bg_BG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bahrain&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ar_BH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Burundi&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BJ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Benin&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bermuda&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Brunei Darussalam&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;ar_EG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bolivia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;es_BO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Brazil&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;pt_BR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bahamas&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bhutan&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bouvet Island&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Botswana&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_BW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Belarus&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;be_BY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Belize&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Canada&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_CA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cocos (Keeling) Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Congo (Kinshasa)&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Central African Republic&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Congo (Brazzaville)&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Switzerland&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;de_CH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cote d&apos;Ivoire&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cook Islands&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Chile&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;es_CL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cameroon&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;China&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;zh_CN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Colombia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;es_CO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Costa Rica&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;es_CR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cuba&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;es_DO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cape Verde&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CX&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Christmas Island&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cyprus&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Czech Republic&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;cs_CZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;DE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Germany&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;de_DE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;DJ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Djibouti&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;DK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Denmark&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;da_DK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;DM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Dominica&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;DO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Dominican Republic&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;es_DO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;DZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Algeria&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ar_DZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;EC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Ecuador&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;es_EC&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;EE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Estonia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;et_EE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;EG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Egypt&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ar_EG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;EH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Western Sahara&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;ar_MA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;ER&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Eritrea&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ti_ER&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ES&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Spain&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;es_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ET&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Ethiopia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;am_ET&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;FI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Finland&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;fi_FI&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;FJ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Fiji&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;FK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Falkland Islands (Malvinas)&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;FM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Micronesia&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;FO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Faroe Islands&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;fo_FO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;FR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;France&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Gabon&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GB&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;United Kingdom&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Grenada&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Georgia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ka_GE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;French Guiana&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Ghana&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Gibraltar&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Greenland&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;kl_GL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Gambia&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guinea&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GP&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guadeloupe&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GQ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Equatorial Guinea&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Greece&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;el_GR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;South Georgia and the South Sandwich Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guatemala&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;es_GT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guam&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guinea-Bissau&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guyana&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;HK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;China&quot;</span><span class="hl opt">) .</span> <span class="hl str">&apos; (&apos;</span> <span class="hl opt">.</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Hong Kong&quot;</span><span class="hl opt">) .</span> <span class="hl str">&apos;)&apos;</span><span class="hl opt">,</span>      <span class="hl str">&apos;zh_HK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;HM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Heard and McDonald Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;HN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Honduras&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;es_HN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;HR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Croatia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;hr_HR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;HT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Haiti&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;HU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Hungary&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;hu_HU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ID&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Indonesia&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;id_ID&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Ireland&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_IE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Israel&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;he_IL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;India&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;hi_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;British Indian Ocean Territory&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;IQ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Iraq&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;ar_IQ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Iran&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;fa_IR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Iceland&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;is_IS&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Italy&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;it_IT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;JM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Jamaica&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;JO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Jordan&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;ar_JO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;JP&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Japan&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ja_JP&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;KE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Kenya&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_ZW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Kyrgyzstan&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cambodia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc"># kh_KH not released yet</span>
<span class="hl str">&apos;KI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Kiribati&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Comoros&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saint Kitts and Nevis&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KP&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Korea (North)&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;ko_KR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Korea&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ko_KR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;KW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Kuwait&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;ar_KW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;KY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cayman Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Kazakhstan&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;ru_RU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Laos&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;lo_LA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;LB&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Lebanon&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ar_LB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;LC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saint Lucia&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Liechtenstein&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;de_CH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Sri Lanka&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Liberia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Lesotho&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_BW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Lithuania&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;lt_LT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;LU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Luxembourg&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;de_LU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;LV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Latvia&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;lv_LV&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;LY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Libya&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ar_LY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Morocco&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ar_MA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Monaco&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Moldova&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ro_RO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Madagascar&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Marshall Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Macedonia&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;mk_MK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ML&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mali&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Myanmar&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mongolia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;mn_MN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MP&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Northern Mariana Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MQ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Martinique&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mauritania&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Montserrat&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Malta&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;mt_MT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mauritius&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Maldives&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Malawi&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MX&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mexico&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;es_MX&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Malaysia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;ms_MY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mozambique&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Namibia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;New Caledonia&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Niger&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Norfolk Island&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Nigeria&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Nicaragua&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;es_NI&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;NL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Netherlands&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;nl_NL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;NO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Norway&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;no_NO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;NP&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Nepal&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Nauru&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Niue&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;New Zealand&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;en_NZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;OM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Oman&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;ar_OM&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Panama&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;es_PA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Peru&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;es_PE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;French Polynesia&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;PG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Papua New Guinea&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_NZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;PH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Philippines&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;ph_PH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Pakistan&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;ur_PK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Poland&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;pl_PL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saint Pierre and Miquelon&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_CA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;PN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Pitcairn&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;PR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Puerto Rico&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;es_PR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Palestine&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;ar_JO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;PT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Portugal&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Paraguay&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;es_PY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Palau&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;QA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Qatar&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ar_QA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;RE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Reunion&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;RO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Romania&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ro_RO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;RU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Russia&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;ru_RU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;RW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Rwanda&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saudi Arabia&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;ar_SA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SB&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Solomon Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Seychelles&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Sudan&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ar_SD&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Sweden&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;sv_SE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Singapore&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_SG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saint Helena&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Slovenia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;sl_SI&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SJ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Svalbard and Jan Mayen Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Slovakia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;sk_SK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Sierra Leone&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;San Marino&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;it_IT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Senegal&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Somalia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Suriname&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;nl_NL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;ST&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Sao Tome and Principe&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;El Salvador&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;es_SV&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Syria&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ar_SY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Swaziland&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_BW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Turks and Caicos Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Chad&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;French Southern Territories&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Togo&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Thailand&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;th_TH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;TJ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Tajikistan&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;tg_TJ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;TK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Tokelau&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;East Timor&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Turkmenistan&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Tunisia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ar_TN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;TO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Tonga&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Turkey&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;tr_TR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;TT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Trinidad and Tobago&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Tuvalu&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;TW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Taiwan&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;zh_TW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;TZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Tanzania&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;UA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Ukraine&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;uk_UA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;UG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Uganda&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;UM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;United States Minor Outlying Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;US&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;United States&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;UY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Uruguay&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;es_UY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;UZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Uzbekistan&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;uz_UZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;VA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Vatican&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;it_IT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;VC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saint Vincent and the Grenadines&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> 
<span class="hl str">&apos;VE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Venezuela&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;es_VE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;VG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Virgin Islands (British)&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;VI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Virgin Islands (U.S.)&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;VN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Vietnam&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;vi_VN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;VU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Vanuatu&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;WF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Wallis and Futuna&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;WS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Samoa&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;YE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Yemen&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ar_YE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;YT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mayotte&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;YU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Serbia&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;sp_YU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ZA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;South Africa&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;en_ZA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ZM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Zambia&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;ZW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Zimbabwe&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_ZW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl opt">);</span>
<span class="hl kwa">sub</span> c2name   <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$countries</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> translate<span class="hl opt">(</span><span class="hl kwb">$countries</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">0</span><span class="hl opt">]) }</span>
<span class="hl kwa">sub</span> c2locale <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$countries</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$countries</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">1</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> list_countries <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">%options</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;l</span> <span class="hl opt">=</span> <span class="hl kwc">keys</span> <span class="hl kwb">%countries</span><span class="hl opt">;</span>
    <span class="hl kwb">$options</span><span class="hl opt">{</span>exclude_non_installed<span class="hl opt">}</span> ? <span class="hl kwc">grep</span> <span class="hl opt">{ -</span>e <span class="hl str">&quot;/usr/share/locale/&quot;</span><span class="hl opt">.</span>c2locale<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">).</span><span class="hl str">&quot;/LC_CTYPE&quot;</span> <span class="hl opt">}</span> <span class="hl kwb">&#64;l</span> <span class="hl opt">:</span> <span class="hl kwb">&#64;l</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl slc">#- this list is built with &apos;cd /usr/share/i18n/locales ; echo ??_??&apos;</span>
<span class="hl slc">#- plus sp_YU, eo_XX, mn_MN, lo_LA, ph_PH, en_BE</span>
<span class="hl kwc">our</span> <span class="hl kwb">&#64;locales</span> <span class="hl opt">=</span> <span class="hl str">qw(af_ZA am_ET 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_SY ar_TN ar_YE az_AZ be_BY bg_BG bn_BD bn_IN br_FR bs_BA ca_ES cs_CZ cy_GB da_DK de_AT de_BE de_CH de_DE de_LU el_GR en_AU en_BW en_CA en_DK en_GB en_HK en_IE en_IN en_NZ en_PH en_SG en_US en_ZA en_ZW es_AR es_BO es_CL es_CO es_CR 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 fi_FI fo_FO fr_BE fr_CA fr_CH fr_FR fr_LU ga_IE gd_GB gl_ES gv_GB he_IL hi_IN hr_HR hu_HU hy_AM id_ID is_IS it_CH it_IT iw_IL ja_JP ka_GE kl_GL ko_KR kw_GB lt_LT lv_LV mi_NZ mk_MK mr_IN ms_MY mt_MT nl_BE nl_NL nn_NO no_NO oc_FR pl_PL pt_BR pt_PT ro_RO ru_RU ru_UA se_NO sk_SK sl_SI sq_AL sr_YU sv_FI sv_SE ta_IN te_IN tg_TJ th_TH ti_ER ti_ET tl_PH tr_TR tt_RU uk_UA ur_PK uz_UZ vi_VN wa_BE yi_US zh_CN zh_HK zh_SG zh_TW sp_YU eo_XX mn_MN lo_LA ph_PH en_BE)</span><span class="hl opt">;</span>

<span class="hl kwa">sub</span> standard_locale <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$lang, $country, $utf8</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
  retry<span class="hl opt">:</span>
    member<span class="hl opt">(</span><span class="hl str">&quot;${lang}_${country}&quot;</span><span class="hl opt">,</span> <span class="hl kwb">&#64;locales</span><span class="hl opt">)</span> <span class="hl kwc">and</span> <span class="hl kwa">return</span> <span class="hl str">&quot;${lang}_${country}&quot;</span><span class="hl opt">.(</span><span class="hl kwb">$utf8</span> ? <span class="hl str">&apos;.UTF-8&apos;</span> <span class="hl opt">:</span> <span class="hl str">&apos;&apos;</span><span class="hl opt">);</span>
    <span class="hl kwc">length</span><span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">) &gt;</span> <span class="hl num">2</span> <span class="hl kwc">and</span> <span class="hl kwb">$lang</span> <span class="hl opt">=~</span> <span class="hl kwd">s/^(..).*/$1/</span><span class="hl opt">,</span> <span class="hl kwa">goto</span> retry<span class="hl opt">;</span>
<span class="hl opt">}</span>
    
<span class="hl kwa">sub</span> getlocale_for_lang <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$lang, $country, $o_utf8</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    standard_locale<span class="hl opt">(</span><span class="hl kwb">$lang, $country, $o_utf8</span><span class="hl opt">) ||</span> l2locale<span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">).(</span><span class="hl kwb">$o_utf8</span> ? <span class="hl str">&apos;.UTF-8&apos;</span> <span class="hl opt">:</span> <span class="hl str">&apos;&apos;</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> getlocale_for_country <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$lang, $country, $o_utf8</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    standard_locale<span class="hl opt">(</span><span class="hl kwb">$lang, $country, $o_utf8</span><span class="hl opt">) ||</span> c2locale<span class="hl opt">(</span><span class="hl kwb">$country</span><span class="hl opt">).(</span><span class="hl kwb">$o_utf8</span> ? <span class="hl str">&apos;.UTF-8&apos;</span> <span class="hl opt">:</span> <span class="hl str">&apos;&apos;</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> getLANGUAGE <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$lang, $o_country, $o_utf8</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    l2language<span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">) ||</span> <span class="hl kwc">join</span><span class="hl opt">(</span><span class="hl str">&apos;:&apos;</span><span class="hl opt">,</span> uniq<span class="hl opt">(</span>getlocale_for_lang<span class="hl opt">(</span><span class="hl kwb">$lang, $o_country, $o_utf8</span><span class="hl opt">),</span> <span class="hl kwb">$lang,</span> if_<span class="hl opt">(</span><span class="hl kwb">$lang</span> <span class="hl opt">=~</span> <span class="hl kwd">/^(..)_/</span><span class="hl opt">,</span> <span class="hl kwb">$1</span><span class="hl opt">)));</span>
<span class="hl opt">}</span>

<span class="hl kwc">my</span> <span class="hl kwb">%xim</span> <span class="hl opt">= (</span>
<span class="hl slc">#- xcin only works with &apos;zh_TW&apos;, &apos;zh_TW.Big5&apos;, &apos;zh_CN&apos;, &apos;zh_CN.GB2312&apos;</span>
<span class="hl slc">#- all other locale names, in particular &apos;zh_HK&apos; or &apos;zh_TW.UTF-8&apos;</span>
<span class="hl slc">#- are unknown to it. So chinput is used for all but &apos;zh_TW&apos;</span>
  <span class="hl str">&apos;zh_TW&apos;</span> <span class="hl opt">=&gt; {</span> 
 	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;big5&apos;</span><span class="hl opt">,</span>
 	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;xcin&apos;</span><span class="hl opt">,</span>
 	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;xcin&apos;</span><span class="hl opt">,</span>
 	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=xcin-zh_TW&quot;&apos;</span><span class="hl opt">,</span>
 	CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;zh_TW.UTF-8&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;utf8&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Chinput&apos;</span><span class="hl opt">,</span>
	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;chinput&apos;</span><span class="hl opt">,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=Chinput&quot;&apos;</span><span class="hl opt">,</span>
	CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;zh_CN&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;gb&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Chinput&apos;</span><span class="hl opt">,</span>
	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;chinput&apos;</span><span class="hl opt">,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=Chinput&quot;&apos;</span><span class="hl opt">,</span>
	CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;zh_CN.UTF-8&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;utf8&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Chinput&apos;</span><span class="hl opt">,</span>
	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;chinput&apos;</span><span class="hl opt">,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=Chinput&quot;&apos;</span><span class="hl opt">,</span>
	CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;zh_SG&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;gb&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Chinput&apos;</span><span class="hl opt">,</span>
	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;chinput&apos;</span><span class="hl opt">,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=Chinput&quot;&apos;</span><span class="hl opt">,</span>
	CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;zh_SG.UTF-8&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;utf8&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Chinput&apos;</span><span class="hl opt">,</span>
	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;chinput&apos;</span><span class="hl opt">,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=Chinput&quot;&apos;</span><span class="hl opt">,</span>
	CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;zh_HK&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;big5&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Chinput&apos;</span><span class="hl opt">,</span>
	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;chinput&apos;</span><span class="hl opt">,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=Chinput&quot;&apos;</span><span class="hl opt">,</span>
	CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;zh_HK.UTF-8&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;utf8&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Chinput&apos;</span><span class="hl opt">,</span>
	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;chinput&apos;</span><span class="hl opt">,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=Chinput&quot;&apos;</span><span class="hl opt">,</span>
	CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;ko_KR&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;kr&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Ami&apos;</span><span class="hl opt">,</span>
	<span class="hl slc">#- NOTE: there are several possible versions of ami, for the different</span>
	<span class="hl slc">#- desktops (kde, gnome, etc). So XIM_PROGRAM isn&apos;t defined; it will</span>
	<span class="hl slc">#- be the xinitrc script, XIM section, that will choose the right one </span>
	<span class="hl slc">#- XIM_PROGRAM =&gt; &apos;ami&apos;,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=Ami&quot;&apos;</span><span class="hl opt">,</span>
	CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;ko_KR.UTF-8&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;utf8&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Ami&apos;</span><span class="hl opt">,</span>
	<span class="hl slc">#- NOTE: there are several possible versions of ami, for the different</span>
	<span class="hl slc">#- desktops (kde, gnome, etc). So XIM_PROGRAM isn&apos;t defined; it will</span>
	<span class="hl slc">#- be the xinitrc script, XIM section, that will choose the right one </span>
	<span class="hl slc">#- XIM_PROGRAM =&gt; &apos;ami&apos;,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=Ami&quot;&apos;</span><span class="hl opt">,</span>
	CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;ja_JP&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;eucj&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;kinput2&apos;</span><span class="hl opt">,</span>
	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;kinput2&apos;</span><span class="hl opt">,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=kinput2&quot;&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl str">&apos;ja_JP.UTF-8&apos;</span> <span class="hl opt">=&gt; {</span>
	ENC <span class="hl opt">=&gt;</span> <span class="hl str">&apos;utf8&apos;</span><span class="hl opt">,</span>
	XIM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;kinput2&apos;</span><span class="hl opt">,</span>
	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;kinput2&apos;</span><span class="hl opt">,</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=kinput2&quot;&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl slc">#-�XFree86 has an internal XIM for Thai that enables syntax checking etc.</span>
  <span class="hl slc">#-�&apos;Passthroug&apos; is no check at all, &apos;BasicCheck&apos; accepts bad sequences</span>
  <span class="hl slc">#-�and convert them to right ones, &apos;Strict&apos; refuses bad sequences</span>
  <span class="hl str">&apos;th_TH&apos;</span> <span class="hl opt">=&gt; {</span>
	XIM_PROGRAM <span class="hl opt">=&gt;</span> <span class="hl str">&apos;/bin/true&apos;</span><span class="hl opt">,</span> <span class="hl slc">#- it&apos;s an internal module</span>
	XMODIFIERS <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&quot;</span><span class="hl ipl">&#64;im</span><span class="hl str">=BasicCheck&quot;&apos;</span><span class="hl opt">,</span>
  <span class="hl opt">},</span>
  <span class="hl slc">#-�xvnkb is not an XIM input method; but an input method of another</span>
  <span class="hl slc">#-�kind, only XIM_PROGRAM needs to be defined</span>
  <span class="hl slc">#- ! xvnkb doesn&apos;t work in UTF-8 !</span>
<span class="hl slc">#-  &apos;vi_VN.VISCII&apos; =&gt; {</span>
<span class="hl slc">#-	XIM_PROGRAM =&gt; &apos;xvnkb&apos;,</span>
<span class="hl slc">#-  },</span>
<span class="hl opt">);</span>

<span class="hl slc">#- [0]: console font name</span>
<span class="hl slc">#- [1]: sfm map for console font (if needed)</span>
<span class="hl slc">#- [2]: acm file for console font (none if utf8)</span>
<span class="hl slc">#- [3]: iocharset param for mount (utf8 if utf8)</span>
<span class="hl slc">#- [4]: codepage parameter for mount (none if utf8)</span>
<span class="hl kwc">my</span> <span class="hl kwb">%charsets</span> <span class="hl opt">= (</span>
<span class="hl slc">#- chinese needs special console driver for text mode</span>
<span class="hl str">&quot;Big5&quot;</span>        <span class="hl opt">=&gt; [</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>         <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>           <span class="hl str">&quot;big5&quot;</span><span class="hl opt">,</span>       <span class="hl str">&quot;950&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;gb2312&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>         <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>           <span class="hl str">&quot;gb2312&quot;</span><span class="hl opt">,</span>     <span class="hl str">&quot;936&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;C&quot;</span>           <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;lat0-16&quot;</span><span class="hl opt">,</span>     <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;iso15&quot;</span><span class="hl opt">,</span>         <span class="hl str">&quot;iso8859-1&quot;</span><span class="hl opt">,</span>  <span class="hl str">&quot;850&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;iso-8859-1&quot;</span>  <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;lat1-16&quot;</span><span class="hl opt">,</span>     <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;iso01&quot;</span><span class="hl opt">,</span>         <span class="hl str">&quot;iso8859-1&quot;</span><span class="hl opt">,</span>  <span class="hl str">&quot;850&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;iso-8859-2&quot;</span>  <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;lat2-sun16&quot;</span><span class="hl opt">,</span>  <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;iso02&quot;</span><span class="hl opt">,</span>         <span class="hl str">&quot;iso8859-2&quot;</span><span class="hl opt">,</span>  <span class="hl str">&quot;852&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;iso-8859-5&quot;</span>  <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;UniCyr_8x16&quot;</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;iso05&quot;</span><span class="hl opt">,</span>         <span class="hl str">&quot;iso8859-5&quot;</span><span class="hl opt">,</span>  <span class="hl str">&quot;866&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;iso-8859-7&quot;</span>  <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;iso07.f16&quot;</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;iso07&quot;</span><span class="hl opt">,</span>         <span class="hl str">&quot;iso8859-7&quot;</span><span class="hl opt">,</span>  <span class="hl str">&quot;869&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;iso-8859-9&quot;</span>  <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;lat5u-16&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;iso09&quot;</span><span class="hl opt">,</span>         <span class="hl str">&quot;iso8859-9&quot;</span><span class="hl opt">,</span>  <span class="hl str">&quot;857&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;iso-8859-13&quot;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;tlat7&quot;</span><span class="hl opt">,</span>       <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;iso13&quot;</span><span class="hl opt">,</span>         <span class="hl str">&quot;iso8859-13&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;775&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;iso-8859-15&quot;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;lat0-16&quot;</span><span class="hl opt">,</span>     <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;iso15&quot;</span><span class="hl opt">,</span>         <span class="hl str">&quot;iso8859-15&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;850&quot;</span> <span class="hl opt">],</span>
<span class="hl slc">#- japanese needs special console driver for text mode [kon2]</span>
<span class="hl str">&quot;jisx0208&quot;</span>    <span class="hl opt">=&gt; [</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>         <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;trivial.trans&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;euc-jp&quot;</span><span class="hl opt">,</span>     <span class="hl str">&quot;932&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;koi8-r&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;UniCyr_8x16&quot;</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;koi8-r&quot;</span><span class="hl opt">,</span>        <span class="hl str">&quot;koi8-r&quot;</span><span class="hl opt">,</span>     <span class="hl str">&quot;866&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;koi8-u&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;UniCyr_8x16&quot;</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;koi8-u&quot;</span><span class="hl opt">,</span>        <span class="hl str">&quot;koi8-u&quot;</span><span class="hl opt">,</span>     <span class="hl str">&quot;866&quot;</span> <span class="hl opt">],</span>
<span class="hl str">&quot;cp1251&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;UniCyr_8x16&quot;</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;cp1251&quot;</span><span class="hl opt">,</span>        <span class="hl str">&quot;cp1251&quot;</span><span class="hl opt">,</span>     <span class="hl str">&quot;866&quot;</span> <span class="hl opt">],</span>
<span class="hl slc">#- korean needs special console driver for text mode</span>
<span class="hl str">&quot;ksc5601&quot;</span>     <span class="hl opt">=&gt; [</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>         <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>           <span class="hl str">&quot;euc-kr&quot;</span><span class="hl opt">,</span>     <span class="hl str">&quot;949&quot;</span> <span class="hl opt">],</span>
<span class="hl slc">#- I have no console font for Thai...</span>
<span class="hl str">&quot;tis620&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>         <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl str">&quot;trivial.trans&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;tis-620&quot;</span><span class="hl opt">,</span>    <span class="hl str">&quot;874&quot;</span> <span class="hl opt">],</span>
<span class="hl slc"># UTF-8 encodings here; they differ in the console font mainly.</span>
<span class="hl str">&quot;utf_am&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Agafari-16&quot;</span><span class="hl opt">,</span>     <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_ar&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;iso06.f16&quot;</span><span class="hl opt">,</span>      <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_az&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;tiso09e&quot;</span><span class="hl opt">,</span>        <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_cyr1&quot;</span>    <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;UniCyr_8x16&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_cyr2&quot;</span>    <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;koi8-k&quot;</span><span class="hl opt">,</span>         <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_he&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;iso08.f16&quot;</span><span class="hl opt">,</span>      <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_hy&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;arm8&quot;</span><span class="hl opt">,</span>           <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_ka&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;t_geors&quot;</span><span class="hl opt">,</span>        <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_lo&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>            <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_ta&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;tamil&quot;</span><span class="hl opt">,</span>          <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_vi&quot;</span>      <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;tcvn8x16&quot;</span><span class="hl opt">,</span>       <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl str">&quot;utf_lat8&quot;</span>    <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;iso14.f16&quot;</span><span class="hl opt">,</span>      <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl slc"># default for utf-8 encodings</span>
<span class="hl str">&quot;unicode&quot;</span>     <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;LatArCyrHeb-16&quot;</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span>   <span class="hl kwc">undef</span><span class="hl opt">,</span>      <span class="hl str">&quot;utf8&quot;</span><span class="hl opt">,</span>    <span class="hl kwc">undef</span> <span class="hl opt">],</span>
<span class="hl opt">);</span>

<span class="hl slc">#- for special cases not handled magically</span>
<span class="hl kwc">my</span> <span class="hl kwb">%charset2kde_charset</span> <span class="hl opt">= (</span>
    gb2312 <span class="hl opt">=&gt;</span> <span class="hl str">&apos;gb2312.1980-0&apos;</span><span class="hl opt">,</span>
    jisx0208 <span class="hl opt">=&gt;</span> <span class="hl str">&apos;jisx0208.1983-0&apos;</span><span class="hl opt">,</span>
    ksc5601 <span class="hl opt">=&gt;</span> <span class="hl str">&apos;ksc5601.1987-0&apos;</span><span class="hl opt">,</span>
    Big5 <span class="hl opt">=&gt;</span> <span class="hl str">&apos;big5-0&apos;</span><span class="hl opt">,</span>
    cp1251 <span class="hl opt">=&gt;</span> <span class="hl str">&apos;microsoft-cp1251&apos;</span><span class="hl opt">,</span>
    utf8 <span class="hl opt">=&gt;</span> <span class="hl str">&apos;iso10646-1&apos;</span><span class="hl opt">,</span>
    tis620 <span class="hl opt">=&gt;</span> <span class="hl str">&apos;tis620-0&apos;</span><span class="hl opt">,</span>
    <span class="hl slc">#- Tamil KDE translations still use TSCII, and KDE know it as iso-8859-1</span>
    utf_ta <span class="hl opt">=&gt;</span> <span class="hl str">&apos;iso8859-1&apos;</span><span class="hl opt">,</span>
<span class="hl opt">);</span>

<span class="hl kwc">my</span> <span class="hl kwb">&#64;during_install__lang_having_their_LC_CTYPE</span> <span class="hl opt">=</span> <span class="hl str">qw(ja ko ta)</span><span class="hl opt">;</span>


<span class="hl slc">#- -------------------</span>

<span class="hl kwa">sub</span> list <span class="hl opt">{</span> 
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">%options</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;l</span> <span class="hl opt">=</span> list_langs<span class="hl opt">();</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$options</span><span class="hl opt">{</span>exclude_non_installed_langs<span class="hl opt">}) {</span>
	<span class="hl kwb">&#64;l</span> <span class="hl opt">=</span> <span class="hl kwc">grep</span> <span class="hl opt">{ -</span>e <span class="hl str">&quot;/usr/share/locale/</span><span class="hl ipl">$_/LC_CTYPE</span><span class="hl str">&quot;</span> <span class="hl opt">}</span> <span class="hl kwb">&#64;l</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl kwb">&#64;l</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> l2console_font <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$c</span> <span class="hl opt">=</span> <span class="hl kwb">$charsets</span><span class="hl opt">{</span>l2charset<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">}) ||</span> <span class="hl kwa">return</span><span class="hl opt">}</span> <span class="hl kwc">or</span> <span class="hl kwa">return</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$name, $sfm, $acm</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;$c</span><span class="hl opt">;</span>
    <span class="hl kwc">undef</span> <span class="hl kwb">$acm</span> <span class="hl kwa">if</span> <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>utf8<span class="hl opt">};</span>
    <span class="hl opt">(</span><span class="hl kwb">$name, $sfm, $acm</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> get_kde_lang <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$locale, $o_default</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>

    <span class="hl slc">#- get it using </span>
    <span class="hl slc">#- echo C $(rpm -qp --qf &quot;%{name}\n&quot; /RPMS/kde-i18n-*  | sed &apos;s/kde-i18n-//&apos;)</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;valid_kde_langs</span> <span class="hl opt">=</span> <span class="hl str">qw(C af ar az bg ca cs da de el en_GB eo es et fi fr he hu is it ja ko lt lv mt nb nl nn pl pt pt_BR ro ru sk sl sr sv ta th tr uk xh zh_CN.GB2312 zh_TW.Big5)</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">%valid_kde_langs</span><span class="hl opt">;</span> <span class="hl kwb">&#64;valid_kde_langs</span><span class="hl opt">{</span><span class="hl kwb">&#64;valid_kde_langs</span><span class="hl opt">} = ();</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$valid_lang</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
	<span class="hl slc">#- fast &amp; dirty solution to ensure bad entries do not happen</span>
        <span class="hl kwc">my</span> <span class="hl kwb">%fixlangs</span> <span class="hl opt">= (</span>en <span class="hl opt">=&gt;</span> <span class="hl str">&apos;C&apos;</span><span class="hl opt">,</span> en_US <span class="hl opt">=&gt;</span> <span class="hl str">&apos;C&apos;</span><span class="hl opt">,</span> <span class="hl kwa">no</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;nb&apos;</span><span class="hl opt">,</span> sh <span class="hl opt">=&gt;</span> <span class="hl str">&apos;sr&apos;</span><span class="hl opt">,</span>
                        st <span class="hl opt">=&gt;</span> <span class="hl str">&apos;nso&apos;</span><span class="hl opt">,</span> ve <span class="hl opt">=&gt;</span> <span class="hl str">&apos;ven&apos;</span><span class="hl opt">,</span>
                        zh_CN <span class="hl opt">=&gt;</span> <span class="hl str">&apos;zh_CN.GB2312&apos;</span><span class="hl opt">,</span> zh_SG <span class="hl opt">=&gt;</span> <span class="hl str">&apos;zh_CN.GB2312&apos;</span><span class="hl opt">,</span> zh_TW <span class="hl opt">=&gt;</span> <span class="hl str">&apos;zh_TW.Big5&apos;</span><span class="hl opt">,</span> zh_HK <span class="hl opt">=&gt;</span> <span class="hl str">&apos;zh_TW.Big5&apos;</span><span class="hl opt">);</span>
        <span class="hl kwc">exists</span> <span class="hl kwb">$fixlangs</span><span class="hl opt">{</span><span class="hl kwb">$lang</span><span class="hl opt">}</span> ? <span class="hl kwb">$fixlangs</span><span class="hl opt">{</span><span class="hl kwb">$lang</span><span class="hl opt">} :</span>
	  <span class="hl kwc">exists</span> <span class="hl kwb">$valid_kde_langs</span><span class="hl opt">{</span><span class="hl kwb">$lang</span><span class="hl opt">}</span> ? <span class="hl kwb">$lang</span> <span class="hl opt">:</span>
	  <span class="hl kwc">exists</span> <span class="hl kwb">$valid_kde_langs</span><span class="hl opt">{</span><span class="hl kwc">substr</span><span class="hl opt">(</span><span class="hl kwb">$lang,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">)}</span> ? <span class="hl kwc">substr</span><span class="hl opt">(</span><span class="hl kwb">$lang,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) :</span> <span class="hl str">&apos;&apos;</span><span class="hl opt">;</span>
    <span class="hl opt">};</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$r</span><span class="hl opt">;</span>
    <span class="hl kwb">$r</span> <span class="hl opt">||=</span> <span class="hl kwb">$valid_lang</span><span class="hl opt">-&gt;(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">});</span>
    <span class="hl kwb">$r</span> <span class="hl opt">||=</span> find <span class="hl opt">{</span> <span class="hl kwb">$valid_lang</span><span class="hl opt">-&gt;(</span><span class="hl kwb">$_</span><span class="hl opt">) }</span> <span class="hl kwc">split</span><span class="hl opt">(</span><span class="hl str">&apos;:&apos;</span><span class="hl opt">,</span> getlocale_for_lang<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">},</span> <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>country<span class="hl opt">}));</span>
    <span class="hl kwb">$r</span> <span class="hl opt">||</span> <span class="hl kwb">$o_default</span> <span class="hl opt">||</span> <span class="hl str">&apos;C&apos;</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> charset2kde_charset <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$charset, $o_default</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$iocharset</span> <span class="hl opt">= (</span><span class="hl kwb">$charsets</span><span class="hl opt">{</span><span class="hl kwb">$charset</span><span class="hl opt">} || [])-&gt;[</span><span class="hl num">3</span><span class="hl opt">];</span>

    <span class="hl kwc">my</span> <span class="hl kwb">&#64;valid_kde_charsets</span> <span class="hl opt">=</span> <span class="hl str">qw(big5-0 gb2312.1980-0 iso10646-1 iso8859-1 iso8859-4 iso8859-6 iso8859-8 iso8859-13 iso8859-14 iso8859-15 iso8859-2 iso8859-3 iso8859-5 iso8859-7 iso8859-9 koi8-r koi8-u ksc5601.1987-0 jisx0208.1983-0 microsoft-cp1251 tis620-0)</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">%valid_kde_charsets</span><span class="hl opt">;</span> <span class="hl kwb">&#64;valid_kde_charsets</span><span class="hl opt">{</span><span class="hl kwb">&#64;valid_kde_charsets</span><span class="hl opt">} = ();</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$valid_charset</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$charset</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
	<span class="hl slc">#- fast &amp; dirty solution to ensure bad entries do not happen</span>
	<span class="hl kwc">exists</span> <span class="hl kwb">$valid_kde_charsets</span><span class="hl opt">{</span><span class="hl kwb">$charset</span><span class="hl opt">} &amp;&amp;</span> <span class="hl kwb">$charset</span><span class="hl opt">;</span>
    <span class="hl opt">};</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$r</span><span class="hl opt">;</span>
    <span class="hl kwb">$r</span> <span class="hl opt">||=</span> <span class="hl kwb">$valid_charset</span><span class="hl opt">-&gt;(</span><span class="hl kwb">$charset2kde_charset</span><span class="hl opt">{</span><span class="hl kwb">$charset</span><span class="hl opt">});</span>
    <span class="hl kwb">$r</span> <span class="hl opt">||=</span> <span class="hl kwb">$valid_charset</span><span class="hl opt">-&gt;(</span><span class="hl kwb">$charset2kde_charset</span><span class="hl opt">{</span><span class="hl kwb">$iocharset</span><span class="hl opt">});</span>
    <span class="hl kwb">$r</span> <span class="hl opt">||=</span> <span class="hl kwb">$valid_charset</span><span class="hl opt">-&gt;(</span><span class="hl kwb">$iocharset</span><span class="hl opt">);</span>
    <span class="hl kwb">$r</span> <span class="hl opt">||</span> <span class="hl kwb">$o_default</span> <span class="hl opt">||</span> <span class="hl str">&apos;iso10646-1&apos;</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl slc">#- font+size for different charsets; the field [0] is the default,</span>
<span class="hl slc">#- others are overrridens for fixed(1), toolbar(2), menu(3) and taskbar(4)</span>
<span class="hl kwc">my</span> <span class="hl kwb">%charset2kde_font</span> <span class="hl opt">= (</span>
  <span class="hl str">&apos;C&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Sans,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Monospace,10&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;iso-8859-1&apos;</span>  <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Sans,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Monospace,10&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;iso-8859-2&apos;</span>  <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Sans,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Monospace,10&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;iso-8859-7&apos;</span>  <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Helvetica,12&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;courier,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Helvetica,11&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;iso-8859-9&apos;</span>  <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Sans,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Monospace,10&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Sans,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Monospace,10&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;iso-8859-13&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Sans,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Monospace,10&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;jisx0208&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Kochi Mincho,13&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Kochi Gothic,13&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;ksc5601&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Baekmuk Gulim,16&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;gb2312&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Ar Pl Sungtil Gb,13&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;Big5&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Ar Pl Mingti2l Big5,13&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;tis620&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Norasi,16&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Norasi,15&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;utf_ar&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Kacs_qr,13&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Courier New,13&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Kacs_qr,12&quot;</span> <span class="hl opt">],</span> 
  <span class="hl str">&apos;utf_az&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Nimbus Sans,12&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Nimbus Mono,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Nimbus Sans,11&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;utf_hy&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Artsounk,12&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Monospace,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Artsounk,11&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;utf_ta&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Tscu_paranar,14&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Tsc_avarangalfxd,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Tscu_paranar,12&quot;</span><span class="hl opt">, ],</span>
  <span class="hl slc">#- the following should be changed to better defaults when better fonts</span>
  <span class="hl slc">#- get available</span>
  <span class="hl str">&apos;utf_vi&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;misc-fixed,13&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;misc-fixed,13&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;misc-fixed,10&quot;</span><span class="hl opt">, ],</span>
  <span class="hl str">&apos;utf_am&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;clearlyu,15&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;utf_he&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;clearlyu,15&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;utf_ka&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;clearlyu,15&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;utf_lo&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;clearlyu,15&quot;</span> <span class="hl opt">],</span>
  <span class="hl str">&apos;default&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&quot;Nimbus Sans,12&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Nimbus Mono,10&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;Nimbus Sans,11&quot;</span> <span class="hl opt">],</span>
<span class="hl opt">);</span>

<span class="hl kwa">sub</span> charset2kde_font <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$charset, $type</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$font</span> <span class="hl opt">=</span> <span class="hl kwb">$charset2kde_font</span><span class="hl opt">{</span><span class="hl kwb">$charset</span><span class="hl opt">} ||</span> <span class="hl kwb">$charset2kde_font</span><span class="hl opt">{</span><span class="hl kwa">default</span><span class="hl opt">};</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$r</span> <span class="hl opt">=</span> <span class="hl kwb">$font</span><span class="hl opt">-&gt;[</span><span class="hl kwb">$type</span><span class="hl opt">] ||</span> <span class="hl kwb">$font</span><span class="hl opt">-&gt;[</span><span class="hl num">0</span><span class="hl opt">];</span>

    <span class="hl slc">#- the format is &quot;font-name,size,-1,5,0,0,0,0,0,0&quot; I have no idea of the</span>
    <span class="hl slc">#- meaning of that &quot;5&quot;...</span>
    <span class="hl str">&quot;</span><span class="hl ipl">$r,</span><span class="hl str">-1,5,0,0,0,0,0,0&quot;</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl slc"># this define pango name fonts (like &quot;NimbusSans L&quot;) depending</span>
<span class="hl slc"># on the &quot;charset&quot; defined by language array. This allows to selecting</span>
<span class="hl slc"># an appropriate font for each language.</span>
<span class="hl kwc">my</span> <span class="hl kwb">%charset2pango_font</span> <span class="hl opt">= (</span>
  <span class="hl str">&apos;tis620&apos;</span> <span class="hl opt">=&gt;</span>      <span class="hl str">&quot;Norasi 17&quot;</span><span class="hl opt">,</span>
  <span class="hl str">&apos;utf_ar&apos;</span> <span class="hl opt">=&gt;</span>      <span class="hl str">&quot;KacstBook 14&quot;</span><span class="hl opt">,</span>
  <span class="hl str">&apos;utf_cyr2&apos;</span> <span class="hl opt">=&gt;</span>    <span class="hl str">&quot;URW Bookman L 14&quot;</span><span class="hl opt">,</span>
  <span class="hl str">&apos;utf_he&apos;</span> <span class="hl opt">=&gt;</span>      <span class="hl str">&quot;ClearlyU 12&quot;</span><span class="hl opt">,</span>
  <span class="hl str">&apos;utf_hy&apos;</span> <span class="hl opt">=&gt;</span>      <span class="hl str">&quot;Artsounk 14&quot;</span><span class="hl opt">,</span>
  <span class="hl str">&apos;utf_ka&apos;</span> <span class="hl opt">=&gt;</span>      <span class="hl str">&quot;ClearlyU 14&quot;</span><span class="hl opt">,</span>
  <span class="hl str">&apos;utf_lo&apos;</span> <span class="hl opt">=&gt;</span>      <span class="hl str">&quot;ClearlyU 14&quot;</span><span class="hl opt">,</span>
  <span class="hl str">&apos;utf_ta&apos;</span> <span class="hl opt">=&gt;</span>      <span class="hl str">&quot;TSCu_Paranar 14&quot;</span><span class="hl opt">,</span>
  <span class="hl str">&apos;utf_vi&apos;</span> <span class="hl opt">=&gt;</span>      <span class="hl str">&quot;ClearlyU 14&quot;</span><span class="hl opt">,</span>
  <span class="hl str">&apos;iso-8859-7&apos;</span> <span class="hl opt">=&gt;</span>  <span class="hl str">&quot;Kerkis 14&quot;</span><span class="hl opt">,</span>
  <span class="hl str">&apos;jisx0208&apos;</span> <span class="hl opt">=&gt;</span>    <span class="hl str">&quot;Sans 18&quot;</span><span class="hl opt">,</span>
  <span class="hl slc">#- Nimbus Sans L is missing some chars used by some cyrillic languages,</span>
  <span class="hl slc">#- but tose haven&apos;t yet DrakX translations; it also misses vietnamese</span>
  <span class="hl slc">#- latin chars; all other latin and cyrillic are covered.</span>
  <span class="hl str">&apos;default&apos;</span> <span class="hl opt">=&gt;</span>     <span class="hl str">&quot;Nimbus Sans L 12&quot;</span>
<span class="hl opt">);</span>

<span class="hl kwa">sub</span> charset2pango_font <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$charset</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    
    <span class="hl kwb">$charset2pango_font</span><span class="hl opt">{</span><span class="hl kwc">exists</span> <span class="hl kwb">$charset2pango_font</span><span class="hl opt">{</span><span class="hl kwb">$charset</span><span class="hl opt">}</span> ? <span class="hl kwb">$charset</span> <span class="hl opt">:</span> <span class="hl str">&apos;default&apos;</span><span class="hl opt">};</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> l2pango_font <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$charset</span> <span class="hl opt">=</span> l2charset<span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">)</span> <span class="hl kwc">or log</span><span class="hl opt">::</span>l<span class="hl opt">(</span><span class="hl str">&quot;no charset found for lang</span> <span class="hl ipl">$lang!</span><span class="hl str">&quot;</span><span class="hl opt">),</span> <span class="hl kwa">return</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$font</span> <span class="hl opt">=</span> charset2pango_font<span class="hl opt">(</span><span class="hl kwb">$charset</span><span class="hl opt">);</span>
    <span class="hl kwc">log</span><span class="hl opt">::</span>l<span class="hl opt">(</span><span class="hl str">&quot;lang:</span><span class="hl ipl">$lang</span> <span class="hl str">charset:</span><span class="hl ipl">$charset</span> <span class="hl str">font:</span><span class="hl ipl">$font</span> <span class="hl str">sfm:</span><span class="hl ipl">$charsets</span><span class="hl str">{</span><span class="hl ipl">$charset</span><span class="hl str">}[0]&quot;</span><span class="hl opt">);</span>

    <span class="hl kwa">if</span> <span class="hl opt">(</span>common<span class="hl opt">::</span>usingRamdisk<span class="hl opt">()) {</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$charsets</span><span class="hl opt">{</span><span class="hl kwb">$charset</span><span class="hl opt">}[</span><span class="hl num">0</span><span class="hl opt">] !~</span> <span class="hl kwd">/lat|koi|UniCyr/</span><span class="hl opt">) {</span>
	    install_any<span class="hl opt">::</span>remove_bigseldom_used<span class="hl opt">();</span>
	    <span class="hl kwc">unlink</span> glob_<span class="hl opt">(</span><span class="hl str">&apos;/usr/share/langs/*&apos;</span><span class="hl opt">);</span>  <span class="hl slc">#- remove langs images</span>
	    <span class="hl kwc">my</span> <span class="hl kwb">&#64;generic_fontfiles</span> <span class="hl opt">=</span> <span class="hl str">qw(/usr/X11R6/lib/X11/fonts/12x13mdk.pcf.gz /usr/X11R6/lib/X11/fonts/18x18mdk.pcf.gz)</span><span class="hl opt">;</span>
	    <span class="hl slc">#- need to unlink first because the files actually exist (and are void); they must exist</span>
	    <span class="hl slc">#- because if not, when gtk starts, pango will recompute its cache file and exclude them</span>
	    <span class="hl kwc">unlink</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">),</span> install_any<span class="hl opt">::</span>getAndSaveFile<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">)</span> <span class="hl kwa">foreach</span> <span class="hl kwb">&#64;generic_fontfiles</span><span class="hl opt">;</span>
	<span class="hl opt">}</span>

	<span class="hl kwc">my</span> <span class="hl kwb">%pango_modules</span> <span class="hl opt">= (</span>arabic <span class="hl opt">=&gt;</span> <span class="hl str">&apos;ar|fa|ur&apos;</span><span class="hl opt">,</span> hangul <span class="hl opt">=&gt;</span> <span class="hl str">&apos;ko&apos;</span><span class="hl opt">,</span> hebrew <span class="hl opt">=&gt;</span> <span class="hl str">&apos;he|yi&apos;</span><span class="hl opt">,</span> indic <span class="hl opt">=&gt;</span> <span class="hl str">&apos;hi|bn|ta|te|mr&apos;</span><span class="hl opt">,</span> thai <span class="hl opt">=&gt;</span> <span class="hl str">&apos;th&apos;</span><span class="hl opt">);</span>
	<span class="hl kwa">foreach</span> <span class="hl kwc">my</span> <span class="hl kwb">$module</span> <span class="hl opt">(</span><span class="hl kwc">keys</span> <span class="hl kwb">%pango_modules</span><span class="hl opt">) {</span>
	    <span class="hl kwa">next if</span> <span class="hl kwb">$lang</span> <span class="hl opt">!~</span> <span class="hl kwd">/$pango_modules{$module}/</span><span class="hl opt">;</span>
	    install_any<span class="hl opt">::</span>remove_bigseldom_used<span class="hl opt">();</span>
	    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$pango_modules_dir</span><span class="hl opt">) =</span> <span class="hl kwc">glob</span><span class="hl opt">(</span><span class="hl str">&apos;/usr/lib/pango/*/modules&apos;</span><span class="hl opt">);</span>
	    install_any<span class="hl opt">::</span>getAndSaveFile<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$pango_modules_dir/pango</span><span class="hl str">-</span><span class="hl ipl">$module</span><span class="hl str">-xft.so&quot;</span><span class="hl opt">);</span>
	<span class="hl opt">}</span>
    <span class="hl opt">}</span>
    
    <span class="hl kwa">return</span> <span class="hl kwb">$font</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> set <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$lang, $b_translate_for_console</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>

    <span class="hl slc">#- disable Arabic in install as no (free) fonts are available.</span>
    <span class="hl kwb">$lang</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;ar&apos;</span> <span class="hl kwc">and</span> <span class="hl kwb">$lang</span><span class="hl opt">=</span><span class="hl str">&apos;en_US&apos;</span><span class="hl opt">;</span>

    <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$lang</span><span class="hl opt">}</span> <span class="hl kwc">or log</span><span class="hl opt">::</span>l<span class="hl opt">(</span><span class="hl str">&quot;lang::set: trying to set to</span> <span class="hl ipl">$lang</span> <span class="hl str">but I don&apos;t know it!&quot;</span><span class="hl opt">),</span> <span class="hl kwa">return</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$dir</span> <span class="hl opt">=</span> <span class="hl str">&quot;</span><span class="hl ipl">$ENV</span><span class="hl str">{SHARE_PATH}/locale&quot;</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span> <span class="hl opt">(!-</span>e <span class="hl str">&quot;</span><span class="hl ipl">$dir/$lang</span><span class="hl str">&quot;</span> <span class="hl opt">&amp;&amp;</span> common<span class="hl opt">::</span>usingRamdisk<span class="hl opt">()) {</span>
	<span class="hl kwb">&#64;ENV</span><span class="hl opt">{</span><span class="hl str">qw(LANG LC_ALL LANGUAGE LINGUAS)</span><span class="hl opt">} = ();</span>

	<span class="hl kwc">my</span> <span class="hl kwb">&#64;LCs</span> <span class="hl opt">=</span> <span class="hl str">qw(LC_ADDRESS LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME)</span><span class="hl opt">;</span>
	
	<span class="hl kwc">my</span> <span class="hl kwb">$charset</span> <span class="hl opt">=</span> during_install__l2charset<span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">) ||</span> <span class="hl kwb">$lang</span><span class="hl opt">;</span>
	
	<span class="hl slc">#- there are 3 main charsets containing everything for all locales, except LC_CTYPE</span>
	<span class="hl slc">#- by default, there is UTF-8.</span>
	<span class="hl slc">#- when asked for GB2312 or BIG5, removing the other main charsets</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$main_charset</span> <span class="hl opt">=</span> member<span class="hl opt">(</span><span class="hl kwb">$charset,</span> <span class="hl str">&apos;GB2312&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;BIG5&apos;</span><span class="hl opt">)</span> ? <span class="hl kwb">$charset</span> <span class="hl opt">:</span> <span class="hl str">&apos;UTF-8&apos;</span><span class="hl opt">;</span>
	
	<span class="hl slc">#- removing everything</span>
	<span class="hl slc">#- except in main charset: only removing LC_CTYPE if it is there</span>
	<span class="hl kwc">eval</span> <span class="hl opt">{</span> rm_rf<span class="hl opt">(</span><span class="hl kwb">$_</span> <span class="hl kwc">eq</span> <span class="hl kwb">$main_charset</span> ? <span class="hl str">&quot;</span><span class="hl ipl">$dir/$_/LC_CTYPE</span><span class="hl str">&quot;</span> <span class="hl opt">:</span> <span class="hl str">&quot;</span><span class="hl ipl">$dir/$_</span><span class="hl str">&quot;</span><span class="hl opt">) }</span> <span class="hl kwa">foreach</span> all<span class="hl opt">(</span><span class="hl kwb">$dir</span><span class="hl opt">);</span>
	
	<span class="hl kwa">if</span> <span class="hl opt">(!-</span>e <span class="hl str">&quot;</span><span class="hl ipl">$dir/$main_charset</span><span class="hl str">&quot;</span><span class="hl opt">) {</span>
	    <span class="hl slc">#- getting the main charset</span>
	    <span class="hl kwc">mkdir</span> <span class="hl str">&quot;</span><span class="hl ipl">$dir/$main_charset</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
	    <span class="hl kwc">mkdir</span> <span class="hl str">&quot;</span><span class="hl ipl">$dir/$main_charset/LC_MESSAGES</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
	    install_any<span class="hl opt">::</span>getAndSaveFile<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$dir/$main_charset/$_</span><span class="hl str">&quot;</span><span class="hl opt">)</span> <span class="hl kwa">foreach</span> <span class="hl kwb">&#64;LCs,</span> <span class="hl str">&apos;LC_MESSAGES/SYS_LC_MESSAGES&apos;</span><span class="hl opt">;</span>
	<span class="hl opt">}</span>
	<span class="hl kwc">mkdir</span> <span class="hl str">&quot;</span><span class="hl ipl">$dir/$lang</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
	
	<span class="hl slc">#- linking to the main charset</span>
	<span class="hl kwc">symlink</span> <span class="hl str">&quot;../</span><span class="hl ipl">$main_charset/$_</span><span class="hl str">&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;</span><span class="hl ipl">$dir/$lang/$_</span><span class="hl str">&quot;</span> <span class="hl kwa">foreach</span> <span class="hl kwb">&#64;LCs,</span> <span class="hl str">&apos;LC_MESSAGES&apos;</span><span class="hl opt">;</span>	    
	
	<span class="hl slc">#- getting LC_CTYPE (putting it directly in $lang)</span>
	install_any<span class="hl opt">::</span>getAndSaveFile<span class="hl opt">(</span><span class="hl str">&quot;Mandrake/mdkinst</span><span class="hl ipl">$dir/$charset/LC_CTYPE</span><span class="hl str">&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;</span><span class="hl ipl">$dir/$lang/LC_CTYPE</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
    <span class="hl opt">}</span>
    
    <span class="hl slc">#- set all LC_* variables to a unique locale (&quot;C&quot;), and only redefine</span>
    <span class="hl slc">#- LC_CTYPE (for X11 choosing the fontset) and LANGUAGE (for the po files)</span>
    <span class="hl kwb">$ENV</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">} =</span> <span class="hl str">&apos;C&apos;</span> <span class="hl kwa">foreach</span> <span class="hl str">qw(LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION)</span><span class="hl opt">;</span>
    
    <span class="hl kwb">$ENV</span><span class="hl opt">{</span>LC_CTYPE<span class="hl opt">}    =</span> <span class="hl kwb">$lang</span><span class="hl opt">;</span>
    <span class="hl kwb">$ENV</span><span class="hl opt">{</span>LC_MESSAGES<span class="hl opt">} =</span> <span class="hl kwb">$lang</span><span class="hl opt">;</span>
    <span class="hl kwb">$ENV</span><span class="hl opt">{</span>LANG<span class="hl opt">}        =</span> <span class="hl kwb">$lang</span><span class="hl opt">;</span>
    
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$b_translate_for_console</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$lang</span> <span class="hl opt">=~</span> <span class="hl kwd">/^(ko|ja|zh|th)/</span><span class="hl opt">) {</span>
	<span class="hl kwc">log</span><span class="hl opt">::</span>l<span class="hl opt">(</span><span class="hl str">&quot;not translating in console&quot;</span><span class="hl opt">);</span>
	<span class="hl kwb">$ENV</span><span class="hl opt">{</span>LANGUAGE<span class="hl opt">}  =</span> <span class="hl str">&apos;C&apos;</span><span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	<span class="hl kwb">$ENV</span><span class="hl opt">{</span>LANGUAGE<span class="hl opt">}  =</span> getLANGUAGE<span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">);</span>
    <span class="hl opt">}</span>
    load_mo<span class="hl opt">();</span>
    <span class="hl kwb">$lang</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> langs <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$l</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$l</span><span class="hl opt">-&gt;{</span>all<span class="hl opt">}</span> ? list_langs<span class="hl opt">() :</span> <span class="hl kwc">grep</span> <span class="hl opt">{</span> <span class="hl kwb">$l</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} }</span> <span class="hl kwc">keys</span> <span class="hl kwb">%$l</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> langsLANGUAGE <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$l, $o_c</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    uniq<span class="hl opt">(</span><span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwc">split</span> <span class="hl str">&apos;:&apos;</span><span class="hl opt">,</span> getLANGUAGE<span class="hl opt">(</span><span class="hl kwb">$_, $o_c</span><span class="hl opt">) }</span> langs<span class="hl opt">(</span><span class="hl kwb">$l</span><span class="hl opt">));</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> langs_selected <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span> 
    <span class="hl slc">#- adding the UTF-8 flag (if not forced) depends on the selected languages</span>
    <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>utf8<span class="hl opt">} ||=</span> l2charset<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">}) =~</span> <span class="hl kwd">/utf|unicode/</span>
			<span class="hl opt">|| (</span>uniq <span class="hl kwc">map</span> <span class="hl opt">{</span> l2charset<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) }</span> langs<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>langs<span class="hl opt">})) &gt;</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> pack_langs <span class="hl opt">{</span> 
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$l</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span> 
    <span class="hl kwc">my</span> <span class="hl kwb">$s</span> <span class="hl opt">=</span> <span class="hl kwb">$l</span><span class="hl opt">-&gt;{</span>all<span class="hl opt">}</span> ? <span class="hl str">&apos;all&apos;</span> <span class="hl opt">:</span> <span class="hl kwc">join</span> <span class="hl str">&apos;:&apos;</span><span class="hl opt">,</span> uniq<span class="hl opt">(</span><span class="hl kwc">map</span> <span class="hl opt">{</span> getLANGUAGE<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) }</span> langs<span class="hl opt">(</span><span class="hl kwb">$l</span><span class="hl opt">));</span>
    <span class="hl kwb">$ENV</span><span class="hl opt">{</span>RPM_INSTALL_LANG<span class="hl opt">} =</span> <span class="hl kwb">$s</span><span class="hl opt">;</span>
    <span class="hl kwb">$s</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> system_locales_to_ourlocale <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$locale_lang, $locale_country</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$locale</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span>member<span class="hl opt">(</span><span class="hl kwb">$locale_lang,</span> list_langs<span class="hl opt">())) {</span>
	<span class="hl slc">#- special lang&apos;s such as en_US pt_BR</span>
	<span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">} =</span> <span class="hl kwb">$locale_lang</span><span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">}) =</span> <span class="hl kwb">$locale_lang</span> <span class="hl opt">=~</span> <span class="hl kwd">/^(..)/</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>country<span class="hl opt">}) =</span> <span class="hl kwb">$locale_country</span> <span class="hl opt">=~</span> <span class="hl kwd">/^.._(..)/</span><span class="hl opt">;</span>
    <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>utf8<span class="hl opt">} =</span> <span class="hl kwb">$locale_lang</span> <span class="hl opt">=~</span> <span class="hl kwd">/UTF-8/</span><span class="hl opt">;</span>
    <span class="hl slc">#- safe fallbacks</span>
    <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">} ||=</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">;</span>
    <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>country<span class="hl opt">} ||=</span> <span class="hl str">&apos;US&apos;</span><span class="hl opt">;</span>
    <span class="hl kwb">$locale</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> <span class="hl kwc">read</span> <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$prefix, $user_only</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$f1, $f2</span><span class="hl opt">) = (</span><span class="hl str">&quot;</span><span class="hl ipl">$prefix$ENV</span><span class="hl str">{HOME}/.i18n&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;</span><span class="hl ipl">$prefix/etc/sysconfig/i18n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">%h</span> <span class="hl opt">=</span> getVarsFromSh<span class="hl opt">(</span><span class="hl kwb">$user_only</span> <span class="hl opt">&amp;&amp; -</span>e <span class="hl kwb">$f1</span> ? <span class="hl kwb">$f1</span> <span class="hl opt">:</span> <span class="hl kwb">$f2</span><span class="hl opt">);</span>
    system_locales_to_ourlocale<span class="hl opt">(</span><span class="hl kwb">$h</span><span class="hl opt">{</span>LC_MESSAGES<span class="hl opt">} ||</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl kwb">$h</span><span class="hl opt">{</span>LC_MONETARY<span class="hl opt">} ||</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> write_langs <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$prefix, $langs</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$s</span> <span class="hl opt">=</span> pack_langs<span class="hl opt">(</span><span class="hl kwb">$langs</span><span class="hl opt">);</span>
    <span class="hl kwc">symlink</span> <span class="hl str">&quot;</span><span class="hl ipl">$prefix/etc/rpm</span><span class="hl str">&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;/etc/rpm&quot;</span> <span class="hl kwa">if</span> <span class="hl kwb">$prefix</span><span class="hl opt">;</span>
    substInFile <span class="hl opt">{</span> <span class="hl kwd">s/%_install_langs.*//</span><span class="hl opt">;</span> <span class="hl kwb">$_</span> <span class="hl opt">.=</span> <span class="hl str">&quot;</span><span class="hl ipl">%_install_langs</span> <span class="hl str"></span><span class="hl ipl">$s\n</span><span class="hl str">&quot;</span> <span class="hl kwa">if</span> <span class="hl kwc">eof</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$s</span> <span class="hl opt">}</span> <span class="hl str">&quot;</span><span class="hl ipl">$prefix/etc/rpm/macros</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> <span class="hl kwc">write</span> <span class="hl opt">{</span> 
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$prefix, $locale, $b_user_only, $b_dont_touch_kde_files</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>

    <span class="hl kwb">$locale</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">}</span> <span class="hl kwc">or</span> <span class="hl kwa">return</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$locale_lang</span> <span class="hl opt">=</span> getlocale_for_lang<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">},</span> <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>country<span class="hl opt">},</span> <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>utf8<span class="hl opt">});</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$locale_country</span> <span class="hl opt">=</span> getlocale_for_country<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">},</span> <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>country<span class="hl opt">},</span> <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>utf8<span class="hl opt">});</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$h</span> <span class="hl opt">= {</span>
	XKB_IN_USE <span class="hl opt">=&gt;</span> <span class="hl str">&apos;&apos;</span><span class="hl opt">,</span>
	<span class="hl opt">(</span><span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span> <span class="hl opt">=&gt;</span> <span class="hl kwb">$locale_lang</span> <span class="hl opt">}</span> <span class="hl str">qw(LANG LC_COLLATE LC_CTYPE LC_MESSAGES LC_TIME)</span><span class="hl opt">),</span>
	LANGUAGE <span class="hl opt">=&gt;</span> getLANGUAGE<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">},</span> <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>country<span class="hl opt">},</span> <span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>utf8<span class="hl opt">}),</span>
	<span class="hl opt">(</span><span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span> <span class="hl opt">=&gt;</span> <span class="hl kwb">$locale_country</span> <span class="hl opt">}</span> <span class="hl str">qw(LC_NUMERIC LC_MONETARY LC_ADDRESS LC_MEASUREMENT LC_NAME LC_PAPER LC_IDENTIFICATION LC_TELEPHONE)</span><span class="hl opt">)</span>
    <span class="hl opt">};</span>
    <span class="hl kwc">log</span><span class="hl opt">::</span>l<span class="hl opt">(</span><span class="hl str">&quot;lang::write: lang:</span><span class="hl ipl">$locale</span><span class="hl str">-&gt;{lang} country:</span><span class="hl ipl">$locale</span><span class="hl str">-&gt;{country} locale|lang:</span><span class="hl ipl">$locale_lang</span> <span class="hl str">locale|country:</span><span class="hl ipl">$locale_country</span> <span class="hl str">language:</span><span class="hl ipl">$h</span><span class="hl str">-&gt;{LANGUAGE}&quot;</span><span class="hl opt">);</span>

    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$name, $sfm, $acm</span><span class="hl opt">) =</span> l2console_font<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$name</span> <span class="hl opt">&amp;&amp; !</span><span class="hl kwb">$b_user_only</span><span class="hl opt">) {</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$p</span> <span class="hl opt">=</span> <span class="hl str">&quot;</span><span class="hl ipl">$prefix/usr/lib/kbd</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$name</span><span class="hl opt">) {</span>
	    <span class="hl kwc">eval</span> <span class="hl opt">{</span>
		cp_af<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$p/consolefonts/$name</span><span class="hl str">.psf.gz&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;</span><span class="hl ipl">$prefix/etc/sysconfig/console/consolefonts</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
		add2hash <span class="hl kwb">$h,</span> <span class="hl opt">{</span> SYSFONT <span class="hl opt">=&gt;</span> <span class="hl kwb">$name</span> <span class="hl opt">};</span>
	    <span class="hl opt">};</span>
	    <span class="hl kwb">$&#64;</span> <span class="hl kwc">and log</span><span class="hl opt">::</span>l<span class="hl opt">(</span><span class="hl str">&quot;missing console font</span> <span class="hl ipl">$name</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
	<span class="hl opt">}</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$sfm</span><span class="hl opt">) {</span>
	    <span class="hl kwc">eval</span> <span class="hl opt">{</span>
		cp_af<span class="hl opt">(</span>glob_<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$p/consoletrans/$sfm*</span><span class="hl str">&quot;</span><span class="hl opt">),</span> <span class="hl str">&quot;</span><span class="hl ipl">$prefix/etc/sysconfig/console/consoletrans</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
		add2hash <span class="hl kwb">$h,</span> <span class="hl opt">{</span> UNIMAP <span class="hl opt">=&gt;</span> <span class="hl kwb">$sfm</span> <span class="hl opt">};</span>
	    <span class="hl opt">};</span>
	    <span class="hl kwb">$&#64;</span> <span class="hl kwc">and log</span><span class="hl opt">::</span>l<span class="hl opt">(</span><span class="hl str">&quot;missing console unimap file</span> <span class="hl ipl">$sfm</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
	<span class="hl opt">}</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$acm</span><span class="hl opt">) {</span>
	    <span class="hl kwc">eval</span> <span class="hl opt">{</span>
		cp_af<span class="hl opt">(</span>glob_<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$p/consoletrans/$acm*</span><span class="hl str">&quot;</span><span class="hl opt">),</span> <span class="hl str">&quot;</span><span class="hl ipl">$prefix/etc/sysconfig/console/consoletrans</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
		add2hash <span class="hl kwb">$h,</span> <span class="hl opt">{</span> SYSFONTACM <span class="hl opt">=&gt;</span> <span class="hl kwb">$acm</span> <span class="hl opt">};</span>
	    <span class="hl opt">};</span>
	    <span class="hl kwb">$&#64;</span> <span class="hl kwc">and log</span><span class="hl opt">::</span>l<span class="hl opt">(</span><span class="hl str">&quot;missing console acm file</span> <span class="hl ipl">$acm</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
	<span class="hl opt">}</span>
	
    <span class="hl opt">}</span>
    add2hash <span class="hl kwb">$h, $xim</span><span class="hl opt">{</span><span class="hl kwb">$locale_lang</span><span class="hl opt">};</span>

    <span class="hl slc">#- deactivate translations on console for RTL languages</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$locale_lang</span> <span class="hl opt">=~</span> <span class="hl kwd">/ar|fa|he|ur|yi/</span><span class="hl opt">) {</span>
	add2hash <span class="hl kwb">$h,</span> <span class="hl opt">{</span> CONSOLE_NOT_LOCALIZED <span class="hl opt">=&gt;</span> <span class="hl str">&apos;yes&apos;</span> <span class="hl opt">}</span>
    <span class="hl opt">}</span>

    setVarsInSh<span class="hl opt">(</span><span class="hl kwb">$prefix</span> <span class="hl opt">. (</span><span class="hl kwb">$b_user_only</span> ? <span class="hl str">&quot;</span><span class="hl ipl">$ENV</span><span class="hl str">{HOME}/.i18n&quot;</span> <span class="hl opt">:</span> <span class="hl str">&apos;/etc/sysconfig/i18n&apos;</span><span class="hl opt">),</span> <span class="hl kwb">$h</span><span class="hl opt">);</span>

    <span class="hl kwc">eval</span> <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$charset</span> <span class="hl opt">=</span> l2charset<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">});</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$confdir</span> <span class="hl opt">=</span> <span class="hl kwb">$prefix</span> <span class="hl opt">. (</span><span class="hl kwb">$b_user_only</span> ? <span class="hl str">&quot;</span><span class="hl ipl">$ENV</span><span class="hl str">{HOME}/.kde&quot;</span> <span class="hl opt">:</span> <span class="hl str">&apos;/usr&apos;</span><span class="hl opt">) .</span> <span class="hl str">&apos;/share/config&apos;</span><span class="hl opt">;</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$prev_kde_charset</span><span class="hl opt">) =</span> cat_<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$confdir/kdeglobals</span><span class="hl str">&quot;</span><span class="hl opt">) =~ /^</span>Charset<span class="hl opt">=(.*)/</span>mi<span class="hl opt">;</span>

	mkdir_p<span class="hl opt">(</span><span class="hl kwb">$confdir</span><span class="hl opt">);</span>

	update_gnomekderc<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$confdir/kdeglobals</span><span class="hl str">&quot;</span><span class="hl opt">,</span> Locale <span class="hl opt">=&gt; (</span>
			      Charset <span class="hl opt">=&gt;</span> charset2kde_charset<span class="hl opt">(</span><span class="hl kwb">$charset</span><span class="hl opt">),</span>
			      Country <span class="hl opt">=&gt;</span> <span class="hl kwc">lc</span><span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>country<span class="hl opt">}),</span>
			      Language <span class="hl opt">=&gt;</span> get_kde_lang<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">),</span>
			  <span class="hl opt">));</span>

	<span class="hl kwc">my</span> <span class="hl kwb">%qt_xim</span> <span class="hl opt">= (</span>zh <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Over The Spot&apos;</span><span class="hl opt">,</span> ko <span class="hl opt">=&gt;</span> <span class="hl str">&apos;On The Spot&apos;</span><span class="hl opt">,</span> ja <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Over The Spot&apos;</span><span class="hl opt">);</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$b_user_only</span> <span class="hl opt">&amp;&amp; (</span><span class="hl kwc">my</span> <span class="hl kwb">$qt_xim</span> <span class="hl opt">=</span> <span class="hl kwb">$qt_xim</span><span class="hl opt">{</span><span class="hl kwc">substr</span><span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">},</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">)})) {</span>
	    update_gnomekderc<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$ENV</span><span class="hl str">{HOME}/.qt/qtrc&quot;</span><span class="hl opt">,</span> General <span class="hl opt">=&gt; (</span>XIMInputStyle <span class="hl opt">=&gt;</span> <span class="hl kwb">$qt_xim</span><span class="hl opt">));</span>
	<span class="hl opt">}</span>

        <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$prev_kde_charset</span> <span class="hl kwc">ne</span> charset2kde_charset<span class="hl opt">(</span><span class="hl kwb">$charset</span><span class="hl opt">)) {</span>
	    update_gnomekderc<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$confdir/kdeglobals</span><span class="hl str">&quot;</span><span class="hl opt">,</span> WM <span class="hl opt">=&gt; (</span>
	    		      activeFont <span class="hl opt">=&gt;</span> charset2kde_font<span class="hl opt">(</span><span class="hl kwb">$charset,0</span><span class="hl opt">),</span>
	    		  <span class="hl opt">));</span>
	    update_gnomekderc<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$confdir/kdeglobals</span><span class="hl str">&quot;</span><span class="hl opt">,</span> General <span class="hl opt">=&gt; (</span>
	    		      fixed <span class="hl opt">=&gt;</span> charset2kde_font<span class="hl opt">(</span><span class="hl kwb">$charset,</span> <span class="hl num">1</span><span class="hl opt">),</span>
	    		      font <span class="hl opt">=&gt;</span> charset2kde_font<span class="hl opt">(</span><span class="hl kwb">$charset,</span> <span class="hl num">0</span><span class="hl opt">),</span>
	    		      menuFont <span class="hl opt">=&gt;</span> charset2kde_font<span class="hl opt">(</span><span class="hl kwb">$charset,</span> <span class="hl num">3</span><span class="hl opt">),</span>
	    		      taskbarFont <span class="hl opt">=&gt;</span> charset2kde_font<span class="hl opt">(</span><span class="hl kwb">$charset,</span> <span class="hl num">4</span><span class="hl opt">),</span>
	    		      toolBarFont <span class="hl opt">=&gt;</span> charset2kde_font<span class="hl opt">(</span><span class="hl kwb">$charset,</span> <span class="hl num">2</span><span class="hl opt">),</span>
	    	          <span class="hl opt">));</span>
	    update_gnomekderc<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$confdir/konquerorrc</span><span class="hl str">&quot;</span><span class="hl opt">,</span> FMSettings <span class="hl opt">=&gt; (</span>
	    		      StandardFont <span class="hl opt">=&gt;</span> charset2kde_font<span class="hl opt">(</span><span class="hl kwb">$charset,</span> <span class="hl num">0</span><span class="hl opt">),</span>
	    		  <span class="hl opt">));</span>
	    update_gnomekderc<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$confdir/kdesktoprc</span><span class="hl str">&quot;</span><span class="hl opt">,</span> FMSettings <span class="hl opt">=&gt; (</span>
	    		      StandardFont <span class="hl opt">=&gt;</span> charset2kde_font<span class="hl opt">(</span><span class="hl kwb">$charset,</span> <span class="hl num">0</span><span class="hl opt">),</span>
	    		  <span class="hl opt">));</span>
	<span class="hl opt">}</span>
    <span class="hl opt">}</span> <span class="hl kwa">if</span> <span class="hl opt">!</span><span class="hl kwb">$b_dont_touch_kde_files</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> bindtextdomain<span class="hl opt">() {</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$localedir</span> <span class="hl opt">=</span> <span class="hl str">&quot;</span><span class="hl ipl">$ENV</span><span class="hl str">{SHARE_PATH}/locale&quot;</span><span class="hl opt">;</span>
    <span class="hl kwb">$localedir</span> <span class="hl opt">.=</span> <span class="hl str">&quot;_special&quot;</span> <span class="hl kwa">if</span> <span class="hl opt">$::</span>isInstall<span class="hl opt">;</span>

    c<span class="hl opt">::</span>setlocale<span class="hl opt">();</span>
    c<span class="hl opt">::</span>bind_textdomain_codeset<span class="hl opt">(</span><span class="hl str">&apos;libDrakX&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;UTF-8&apos;</span><span class="hl opt">);</span>
    <span class="hl opt">$::</span>need_utf8_i18n <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    c<span class="hl opt">::</span>bindtextdomain<span class="hl opt">(</span><span class="hl str">&apos;libDrakX&apos;</span><span class="hl opt">,</span> <span class="hl kwb">$localedir</span><span class="hl opt">);</span>

    <span class="hl kwb">$localedir</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> load_mo <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$localedir</span> <span class="hl opt">=</span> bindtextdomain<span class="hl opt">();</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$suffix</span> <span class="hl opt">=</span> <span class="hl str">&apos;LC_MESSAGES/libDrakX.mo&apos;</span><span class="hl opt">;</span>

    <span class="hl kwb">$lang</span> <span class="hl opt">||=</span> <span class="hl kwb">$ENV</span><span class="hl opt">{</span>LANGUAGE<span class="hl opt">} ||</span> <span class="hl kwb">$ENV</span><span class="hl opt">{</span>LC_ALL<span class="hl opt">} ||</span> <span class="hl kwb">$ENV</span><span class="hl opt">{</span>LC_MESSAGES<span class="hl opt">} ||</span> <span class="hl kwb">$ENV</span><span class="hl opt">{</span>LANG<span class="hl opt">};</span>

    <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwc">split</span> <span class="hl str">&apos;:&apos;</span><span class="hl opt">,</span> <span class="hl kwb">$lang</span><span class="hl opt">) {</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$f</span> <span class="hl opt">=</span> <span class="hl str">&quot;</span><span class="hl ipl">$localedir/$_/$suffix</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
	<span class="hl opt">-</span>s <span class="hl kwb">$f</span> <span class="hl kwc">and</span> <span class="hl kwa">return</span> <span class="hl kwb">$_</span><span class="hl opt">;</span>

	<span class="hl kwa">if</span> <span class="hl opt">($::</span>isInstall <span class="hl opt">&amp;&amp;</span> common<span class="hl opt">::</span>usingRamdisk<span class="hl opt">()) {</span>
	    <span class="hl slc">#- cleanup</span>
	    <span class="hl kwc">eval</span> <span class="hl opt">{</span> rm_rf<span class="hl opt">(</span><span class="hl kwb">$localedir</span><span class="hl opt">) };</span>
	    <span class="hl kwc">eval</span> <span class="hl opt">{</span> mkdir_p<span class="hl opt">(</span>dirname<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$localedir/$_/$suffix</span><span class="hl str">&quot;</span><span class="hl opt">)) };</span>
	    install_any<span class="hl opt">::</span>getAndSaveFile<span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$localedir/$_/$suffix</span><span class="hl str">&quot;</span><span class="hl opt">);</span>

	    <span class="hl opt">-</span>s <span class="hl kwb">$f</span> <span class="hl kwc">and</span> <span class="hl kwa">return</span> <span class="hl kwb">$_</span><span class="hl opt">;</span>
	<span class="hl opt">}</span>
    <span class="hl opt">}</span>
    <span class="hl str">&apos;&apos;</span><span class="hl opt">;</span>
<span class="hl opt">}</span>


<span class="hl slc">#- used in Makefile during &quot;make get_needed_files&quot;</span>
<span class="hl kwa">sub</span> console_font_files<span class="hl opt">() {</span>
    <span class="hl kwc">map</span> <span class="hl opt">{ -</span>e <span class="hl kwb">$_</span> ? <span class="hl kwb">$_</span> <span class="hl opt">:</span> <span class="hl str">&quot;</span><span class="hl ipl">$_</span><span class="hl str">.gz&quot;</span> <span class="hl opt">}</span>
      <span class="hl opt">(</span><span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl str">&quot;/usr/lib/kbd/consolefonts/</span><span class="hl ipl">$_</span><span class="hl str">.psf&quot;</span> <span class="hl opt">}</span> uniq <span class="hl kwc">grep</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span> <span class="hl opt">}</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">0</span><span class="hl opt">] }</span> <span class="hl kwc">values</span> <span class="hl kwb">%charsets</span><span class="hl opt">),</span>
      <span class="hl opt">(</span><span class="hl kwc">map</span> <span class="hl opt">{ -</span>e <span class="hl kwb">$_</span> ? <span class="hl kwb">$_</span> <span class="hl opt">:</span> <span class="hl str">&quot;</span><span class="hl ipl">$_</span><span class="hl str">.sfm&quot;</span> <span class="hl opt">}</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl str">&quot;/usr/lib/kbd/consoletrans/</span><span class="hl ipl">$_</span><span class="hl str">&quot;</span> <span class="hl opt">}</span> uniq <span class="hl kwc">grep</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span> <span class="hl opt">}</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">1</span><span class="hl opt">] }</span> <span class="hl kwc">values</span> <span class="hl kwb">%charsets</span><span class="hl opt">),</span>
      <span class="hl opt">(</span><span class="hl kwc">map</span> <span class="hl opt">{ -</span>e <span class="hl kwb">$_</span> ? <span class="hl kwb">$_</span> <span class="hl opt">:</span> <span class="hl str">&quot;</span><span class="hl ipl">$_</span><span class="hl str">.acm&quot;</span> <span class="hl opt">}</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl str">&quot;/usr/lib/kbd/consoletrans/</span><span class="hl ipl">$_</span><span class="hl str">&quot;</span> <span class="hl opt">}</span> uniq <span class="hl kwc">grep</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span> <span class="hl opt">}</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">2</span><span class="hl opt">] }</span> <span class="hl kwc">values</span> <span class="hl kwb">%charsets</span><span class="hl opt">),</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> load_console_font <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$name, $sfm, $acm</span><span class="hl opt">) =</span> l2console_font<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">);</span>

    <span class="hl kwa">require</span> run_program<span class="hl opt">;</span>
    run_program<span class="hl opt">::</span>run<span class="hl opt">(</span>if_<span class="hl opt">(</span><span class="hl kwb">$ENV</span><span class="hl opt">{</span>LD_LOADER<span class="hl opt">},</span> <span class="hl kwb">$ENV</span><span class="hl opt">{</span>LD_LOADER<span class="hl opt">}),</span> 
		     <span class="hl str">&apos;consolechars&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;-v&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;-f&apos;</span><span class="hl opt">,</span> <span class="hl kwb">$name</span> <span class="hl opt">||</span> <span class="hl str">&apos;lat0-sun16&apos;</span><span class="hl opt">,</span>
		     if_<span class="hl opt">(</span><span class="hl kwb">$sfm,</span> <span class="hl str">&apos;-u&apos;</span><span class="hl opt">,</span> <span class="hl kwb">$sfm</span><span class="hl opt">),</span> if_<span class="hl opt">(</span><span class="hl kwb">$acm,</span> <span class="hl str">&apos;-m&apos;</span><span class="hl opt">,</span> <span class="hl kwb">$acm</span><span class="hl opt">));</span>

    <span class="hl slc">#- in console mode install, ensure we&apos;ll get translations in the right codeset</span>
    <span class="hl slc">#- (charset of locales reported by the glibc are UTF-8 during install)</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$acm</span><span class="hl opt">) {</span>
	c<span class="hl opt">::</span>bind_textdomain_codeset<span class="hl opt">(</span><span class="hl str">&apos;libDrakX&apos;</span><span class="hl opt">,</span> l2charset<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">}));</span>
	<span class="hl opt">$::</span>need_utf8_i18n <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> fs_options <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>utf8<span class="hl opt">}) {</span>
	<span class="hl opt">(</span>iocharset <span class="hl opt">=&gt;</span> <span class="hl str">&apos;utf8&apos;</span><span class="hl opt">,</span> codepage <span class="hl opt">=&gt;</span> <span class="hl kwc">undef</span><span class="hl opt">);</span>
    <span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$c</span> <span class="hl opt">=</span> <span class="hl kwb">$charsets</span><span class="hl opt">{</span>l2charset<span class="hl opt">(</span><span class="hl kwb">$locale</span><span class="hl opt">-&gt;{</span>lang<span class="hl opt">}) ||</span> <span class="hl kwa">return</span><span class="hl opt">}</span> <span class="hl kwc">or</span> <span class="hl kwa">return</span><span class="hl opt">;</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$iocharset, $codepage</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;$c</span><span class="hl opt">[</span><span class="hl num">3</span><span class="hl opt">.</span><span class="hl num">.4</span><span class="hl opt">];</span>
	<span class="hl opt">(</span>iocharset <span class="hl opt">=&gt;</span> <span class="hl kwb">$iocharset,</span> codepage <span class="hl opt">=&gt;</span> <span class="hl kwb">$codepage</span><span class="hl opt">);</span>
    <span class="hl opt">}</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> during_install__l2charset <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwa">return if</span> member<span class="hl opt">(</span><span class="hl kwb">$lang, &#64;during_install__lang_having_their_LC_CTYPE</span><span class="hl opt">);</span>

    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">) =</span> l2charset<span class="hl opt">(</span><span class="hl kwb">$lang</span><span class="hl opt">)</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;bad lang</span> <span class="hl ipl">$lang\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl kwb">$c</span> <span class="hl opt">=</span> <span class="hl str">&apos;UTF-8&apos;</span> <span class="hl kwa">if</span> member<span class="hl opt">(</span><span class="hl kwb">$c,</span> <span class="hl str">&apos;tis620&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;C&apos;</span><span class="hl opt">);</span>
    <span class="hl kwb">$c</span> <span class="hl opt">=</span> <span class="hl str">&apos;UTF-8&apos;</span> <span class="hl kwa">if</span> <span class="hl kwb">$c</span> <span class="hl opt">=~</span> <span class="hl kwd">/koi8-/</span><span class="hl opt">;</span>
    <span class="hl kwb">$c</span> <span class="hl opt">=</span> <span class="hl str">&apos;UTF-8&apos;</span> <span class="hl kwa">if</span> <span class="hl kwb">$c</span> <span class="hl opt">=~</span> <span class="hl kwd">/iso-8859/</span><span class="hl opt">;</span>
    <span class="hl kwb">$c</span> <span class="hl opt">=</span> <span class="hl str">&apos;UTF-8&apos;</span> <span class="hl kwa">if</span> <span class="hl kwb">$c</span> <span class="hl opt">=~</span> <span class="hl kwd">/cp125/</span><span class="hl opt">;</span>
    <span class="hl kwb">$c</span> <span class="hl opt">=</span> <span class="hl str">&apos;UTF-8&apos;</span> <span class="hl kwa">if</span> <span class="hl kwb">$c</span> <span class="hl opt">=~</span> <span class="hl kwd">/utf_/</span><span class="hl opt">;</span>
    <span class="hl kwc">uc</span><span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> get_unneeded_png_lang_files<span class="hl opt">() {</span>
    <span class="hl kwc">print join</span><span class="hl opt">(</span><span class="hl str">&apos; &apos;</span><span class="hl opt">,</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> if_<span class="hl opt">(</span>m<span class="hl opt">|(</span>langs<span class="hl opt">/</span>lang-<span class="hl opt">(.*)</span>\<span class="hl opt">.</span>png<span class="hl opt">)| &amp;&amp; !</span>member<span class="hl opt">(</span><span class="hl kwb">$2,</span> list_langs<span class="hl opt">()),</span> <span class="hl kwb">$1</span><span class="hl opt">) }</span> <span class="hl kwc">glob</span><span class="hl opt">(</span><span class="hl str">&quot;pixmaps/langs/lang-*.png&quot;</span><span class="hl opt">));</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> check<span class="hl opt">() {</span>
    <span class="hl kwb">$^W</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$ok</span> <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$warn</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl kwc">print</span> STDERR <span class="hl str">&quot;</span><span class="hl ipl">$_</span><span class="hl str">[0]</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl opt">};</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$err</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl opt">&amp;</span><span class="hl kwb">$warn</span><span class="hl opt">;</span>
	<span class="hl kwb">$ok</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl opt">};</span>
    
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;wanted_charsets</span> <span class="hl opt">=</span> uniq <span class="hl kwc">map</span> <span class="hl opt">{</span> l2charset<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) }</span> list_langs<span class="hl opt">();</span>
    <span class="hl kwc">print</span> <span class="hl str">&quot;</span><span class="hl esc">\t</span><span class="hl str">Warnings:</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl kwb">$warn</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;unused charset</span> <span class="hl ipl">$_</span> <span class="hl str">(given in \</span><span class="hl ipl">%charsets,</span> <span class="hl str">but not used in \</span><span class="hl ipl">%langs</span><span class="hl str">)&quot;</span><span class="hl opt">)</span> <span class="hl kwa">foreach</span> difference2<span class="hl opt">([</span> <span class="hl kwc">keys</span> <span class="hl kwb">%charsets</span> <span class="hl opt">],</span> \<span class="hl kwb">&#64;wanted_charsets</span><span class="hl opt">);</span>

    <span class="hl kwb">$warn</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;unused entry</span> <span class="hl ipl">$_</span> <span class="hl str">in \</span><span class="hl ipl">%xim</span><span class="hl str">&quot;</span><span class="hl opt">)</span> <span class="hl kwa">foreach</span> <span class="hl kwc">grep</span> <span class="hl opt">{ !</span><span class="hl kwd">/UTF-8/</span> <span class="hl opt">}</span> difference2<span class="hl opt">([</span> <span class="hl kwc">keys</span> <span class="hl kwb">%xim</span> <span class="hl opt">], [</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> l2locale<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) }</span> list_langs<span class="hl opt">() ]);</span>

    <span class="hl slc">#- consolefonts are checked during build via console_font_files()</span>

    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwc">my</span> <span class="hl kwb">&#64;l</span> <span class="hl opt">=</span> difference2<span class="hl opt">([</span> <span class="hl str">&apos;default&apos;</span><span class="hl opt">,</span> <span class="hl kwc">keys</span> <span class="hl kwb">%charsets</span> <span class="hl opt">], [</span> <span class="hl kwc">keys</span> <span class="hl kwb">%charset2kde_font</span> <span class="hl opt">])) {</span>
	<span class="hl kwb">$warn</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;no kde font for charset &quot;</span> <span class="hl opt">.</span> <span class="hl kwc">join</span><span class="hl opt">(</span><span class="hl str">&quot; &quot;</span><span class="hl opt">,</span> <span class="hl kwb">&#64;l</span><span class="hl opt">));</span>
    <span class="hl opt">}</span>

    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwc">my</span> <span class="hl kwb">&#64;l</span> <span class="hl opt">=</span> <span class="hl kwc">grep</span> <span class="hl opt">{</span> get_kde_lang<span class="hl opt">({</span> lang <span class="hl opt">=&gt;</span> <span class="hl kwb">$_,</span> country <span class="hl opt">=&gt;</span> <span class="hl str">&apos;US&apos;</span> <span class="hl opt">},</span> <span class="hl str">&apos;err&apos;</span><span class="hl opt">)</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;err&apos;</span> <span class="hl opt">}</span> list_langs<span class="hl opt">()) {</span>
	<span class="hl kwb">$warn</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;no KDE lang for langs &quot;</span> <span class="hl opt">.</span> <span class="hl kwc">join</span><span class="hl opt">(</span><span class="hl str">&quot; &quot;</span><span class="hl opt">,</span> <span class="hl kwb">&#64;l</span><span class="hl opt">));</span>
    <span class="hl opt">}</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwc">my</span> <span class="hl kwb">&#64;l</span> <span class="hl opt">=</span> <span class="hl kwc">grep</span> <span class="hl opt">{</span> charset2kde_charset<span class="hl opt">(</span><span class="hl kwb">$_,</span> <span class="hl str">&apos;err&apos;</span><span class="hl opt">)</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;err&apos;</span> <span class="hl opt">}</span> <span class="hl kwc">keys</span> <span class="hl kwb">%charsets</span><span class="hl opt">) {</span>
	<span class="hl kwb">$warn</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;no KDE charset for charsets &quot;</span> <span class="hl opt">.</span> <span class="hl kwc">join</span><span class="hl opt">(</span><span class="hl str">&quot; &quot;</span><span class="hl opt">,</span> <span class="hl kwb">&#64;l</span><span class="hl opt">));</span>
    <span class="hl opt">}</span>

    <span class="hl kwb">$warn</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;no country corresponding to default locale</span> <span class="hl ipl">$_</span><span class="hl str">-&gt;[1] of lang</span> <span class="hl ipl">$_</span><span class="hl str">-&gt;[0]&quot;</span><span class="hl opt">)</span>
      <span class="hl kwa">foreach</span> <span class="hl kwc">grep</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">1</span><span class="hl opt">] =~</span> <span class="hl kwd">/^.._(..)/</span> <span class="hl opt">&amp;&amp; !</span><span class="hl kwc">exists</span> <span class="hl kwb">$countries</span><span class="hl opt">{</span><span class="hl kwb">$1</span><span class="hl opt">} }</span> <span class="hl kwc">map</span> <span class="hl opt">{ [</span> <span class="hl kwb">$_,</span> l2locale<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) ] }</span> list_langs<span class="hl opt">();</span>

    <span class="hl kwc">print</span> <span class="hl str">&quot;</span><span class="hl esc">\t</span><span class="hl str">Errors:</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>

    <span class="hl kwb">$err</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;invalid charset</span> <span class="hl ipl">$_</span> <span class="hl str">(</span><span class="hl ipl">$_</span> <span class="hl str">does not exist in \</span><span class="hl ipl">%charsets</span><span class="hl str">)&quot;</span><span class="hl opt">)</span> <span class="hl kwa">foreach</span> difference2<span class="hl opt">(</span>\<span class="hl kwb">&#64;wanted_charsets,</span> <span class="hl opt">[</span> <span class="hl kwc">keys</span> <span class="hl kwb">%charsets</span> <span class="hl opt">]);</span>
    <span class="hl kwb">$err</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;invalid charset</span> <span class="hl ipl">$_</span> <span class="hl str">in \</span><span class="hl ipl">%charset2kde_font</span> <span class="hl str">(</span><span class="hl ipl">$_</span> <span class="hl str">does not exist in \</span><span class="hl ipl">%charsets</span><span class="hl str">)&quot;</span><span class="hl opt">)</span> <span class="hl kwa">foreach</span> difference2<span class="hl opt">([</span> <span class="hl kwc">keys</span> <span class="hl kwb">%charset2kde_font</span> <span class="hl opt">], [</span> <span class="hl str">&apos;default&apos;</span><span class="hl opt">,</span> <span class="hl kwc">keys</span> <span class="hl kwb">%charsets</span> <span class="hl opt">]);</span>

    <span class="hl kwb">$err</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;default locale</span> <span class="hl ipl">$_</span><span class="hl str">-&gt;[1] of lang</span> <span class="hl ipl">$_</span><span class="hl str">-&gt;[0] isn&apos;t listed in \</span><span class="hl ipl">&#64;locales</span><span class="hl str">&quot;</span><span class="hl opt">)</span>
      <span class="hl kwa">foreach</span> <span class="hl kwc">grep</span> <span class="hl opt">{ !</span>member<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">1</span><span class="hl opt">],</span> <span class="hl kwb">&#64;locales</span><span class="hl opt">) }</span> <span class="hl kwc">map</span> <span class="hl opt">{ [</span> <span class="hl kwb">$_,</span> l2locale<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) ] }</span> list_langs<span class="hl opt">();</span>

    <span class="hl kwb">$err</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;lang image for lang</span> <span class="hl ipl">$_</span><span class="hl str">-&gt;[0] is missing (file</span> <span class="hl ipl">$_</span><span class="hl str">-&gt;[1])&quot;</span><span class="hl opt">)</span>
      <span class="hl kwa">foreach</span> <span class="hl kwc">grep</span> <span class="hl opt">{ !(-</span>e <span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">1</span><span class="hl opt">]) }</span> <span class="hl kwc">map</span> <span class="hl opt">{ [</span> <span class="hl kwb">$_,</span> <span class="hl str">&quot;pixmaps/langs/lang-</span><span class="hl ipl">$_</span><span class="hl str">.png&quot;</span> <span class="hl opt">] }</span> list_langs<span class="hl opt">();</span>

    <span class="hl kwb">$err</span><span class="hl opt">-&gt;(</span><span class="hl str">&quot;default locale</span> <span class="hl ipl">$_</span><span class="hl str">-&gt;[1] of country</span> <span class="hl ipl">$_</span><span class="hl str">-&gt;[0] isn&apos;t listed in \</span><span class="hl ipl">&#64;locales</span><span class="hl str">&quot;</span><span class="hl opt">)</span>
      <span class="hl kwa">foreach</span> <span class="hl kwc">grep</span> <span class="hl opt">{ !</span>member<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">1</span><span class="hl opt">],</span> <span class="hl kwb">&#64;locales</span><span class="hl opt">) }</span> <span class="hl kwc">map</span> <span class="hl opt">{ [</span> <span class="hl kwb">$_,</span> c2locale<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) ] }</span> list_countries<span class="hl opt">();</span>


    <span class="hl kwa">exit</span><span class="hl opt">(</span><span class="hl kwb">$ok</span> ? <span class="hl num">0</span> <span class="hl opt">:</span> <span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl num">1</span><span class="hl opt">;</span>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.1</a> (<a href='https://git-scm.com/'>git 2.21.0</a>) at 2025-04-01 07:53:28 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>