initial commit

Signed-off-by: Peter Siegmund <mars3142@noreply.mars3142.dev>
This commit is contained in:
2025-10-31 23:37:30 +01:00
commit bf6b52fd94
9654 changed files with 4035664 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
# Generate SQL files
echo "=== Generate SQL files..."
# Create a copy of the current wxWidgets tables
echo "-> Create backup copies"
Copy-Item -Path "..\langtabl.txt" -Destination "temp\langtabl_current.txt"
Copy-Item -Path "..\scripttabl.txt" -Destination "temp\scripttabl_current.txt"
Copy-Item -Path "..\synonymtabl.txt" -Destination "temp\synonymtabl_current.txt"
Copy-Item -Path "..\likelytabl.txt" -Destination "temp\likelytabl_current.txt"
Copy-Item -Path "..\matchingtabl.txt" -Destination "temp\matchingtabl_current.txt"
Copy-Item -Path "..\regiongrouptabl.txt" -Destination "temp\regiongrouptabl_current.txt"
# Generate lists based on Unicode data
echo "-> Generate SQL for territory codes"
Invoke-Expression "$env:luashell unicode\uni_territorycodes.lua"
echo "-> Generate SQL for script codes"
Invoke-Expression "$env:luashell unicode\uni_genscriptmap.lua"
echo "-> Generate SQL for likely subtags"
Invoke-Expression "$env:luashell unicode\uni_getlikely.lua"
echo "-> Generate SQL for matching language tags"
Invoke-Expression "$env:luashell unicode\uni_getmatch.lua"
echo "-> Generate SQL for region groups"
Invoke-Expression "$env:luashell unicode\uni_getregions.lua"
# Generate list of locales based on known Windows locales
echo "-> Generate SQL for known Windows locales"
Invoke-Expression "$env:luashell windows\win_genlocaletable.lua"
# Generate lists based on current wxWidgets data
# Extract current wxWidgets version
echo "-> Generate SQL for wxWidgets version"
Invoke-Expression "$env:luashell wx\wx_readversion.lua"
# Load current version of langtabl.txt
echo "-> Generate SQL for current wxWidgets language database"
Invoke-Expression "$env:luashell wx\wx_loadlangtabl.lua"
# Load list of current synonyms
echo "-> Generate SQL for current wxWidgets language synonym table"
Invoke-Expression "$env:luashell wx\wx_loadsynonymtabl.lua"
echo "=== ...SQL files generated."

View File

@@ -0,0 +1,56 @@
# Download files from Unicode organization
#
# This script has 2 parameters:
# 1. $cldrRelease [mandatory] - The CLDR release number (i.e. "44-1", "45", "46-beta2" ...)
# 2. -useCurrent [optional] - Download the latest file versions (git HEAD)
param([Parameter(Mandatory=$true)][string]$cldrRelease,[switch] $useCurrent)
echo "=== Download of Unicode files start..."
# Create backup copies
echo "-> Create backup copies"
Copy-Item -Path "unicode\iso15924.txt" -Destination "unicode\iso15924.txt.bak"
Copy-Item -Path "unicode\territory_codes.txt" -Destination "unicode\territory_codes.txt.bak"
Copy-Item -Path "unicode\likelySubtags.xml" -Destination "unicode\likelySubtags.xml.bak"
Copy-Item -Path "unicode\languageInfo.xml" -Destination "unicode\languageInfo.xml.bak"
Copy-Item -Path "unicode\supplementalData.xml" -Destination "unicode\supplementalData.xml.bak"
# Set base URL path for download
if ($useCurrent)
{
# Download current data
$basePath="https://github.com/unicode-org/cldr/raw/main"
}
else
{
# Download data of a specific release
$basePath="https://github.com/unicode-org/cldr/raw/refs/tags/release-$cldrRelease"
}
echo "-> URL base path: $basePath"
# Download ISO 15924 (list of scripts)
Invoke-WebRequest -Uri "https://www.unicode.org/iso15924/iso15924.txt" -OutFile "unicode\iso15924.txt"
echo "-> Download of iso15924.txt completed."
# Download ISO 3166 (list of territories)
Invoke-WebRequest -Uri "$basePath/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/territory_codes.txt" -OutFile "unicode\territory_codes.txt"
echo "-> Download of territory_codes.txt completed."
# Download list of likely subtags
Invoke-WebRequest -Uri "$basePath/common/supplemental/likelySubtags.xml" -OutFile "unicode\likelySubtags.xml"
echo "-> Download of likelySubtags.xml completed."
# Download list of language infos
Invoke-WebRequest -Uri "$basePath/common/supplemental/languageInfo.xml" -OutFile "unicode\languageInfo.xml"
echo "-> Download of languageInfo.xml completed."
# Download list of language infos
Invoke-WebRequest -Uri "$basePath/common/supplemental/supplementalData.xml" -OutFile "unicode\supplementalData.xml"
echo "-> Download of supplementalData.xml completed."
# Remove whitespace from data files
echo "-> Remove whitespace from text files"
Invoke-Expression "$env:luashell removewhitespace.lua unicode/iso15924.txt"
Invoke-Expression "$env:luashell removewhitespace.lua unicode/territory_codes.txt"
echo "... Download completed."

View File

@@ -0,0 +1,11 @@
# Retrieve locale data from Windows
echo "=== Retrieve known locales from Windows..."
# Create backup copies
Copy-Item -Path "windows\win-locale-table-win.txt" -Destination "windows\win-locale-table-win.txt.bak"
# Regenerate Windows locale list
..\util\showlocales >windows\win-locale-table-win.txt
echo "-> File 'win-locale-table-win.txt' generated."

View File

@@ -0,0 +1,11 @@
# Create SQLite language database and generate language database files
echo "=== Create SQLite language database and generate language database files..."
# Delete old database, if it exists
Remove-Item -Path "localedata.db3" -ErrorAction Ignore
# Generate new database and new language database files
Invoke-Expression "sqlite3 localedata.db3 `".read mkdatabase.sql`""
echo "-> SQLite database and language database files generated."

View File

@@ -0,0 +1,29 @@
.print Initialize database
.print Import territory codes
.read temp/uni_loadterritorycodes.sql
.print Import locales supported by Windows
.read temp/win_loadlocaletable.sql
.print Import wxWidgets language list
.read temp/wx_loadlangtabl.sql
.print Import wxWidgets language synonyms
.read temp/wx_loadsynonymtabl.sql
.print Import script map
.read temp/uni_loadscriptmap.sql
.print Import likely subtags map
.read temp/uni_loadlikely.sql
.print Import matching subtags map
.read temp/uni_loadmatching.sql
.print Import region groups for main languages map
.read temp/uni_loadregiongroups.sql
.read temp/wx_loadversion.sql
.print Generate new tables (langtabl, scripttabl, synonymtabl, likelytabl, matchingtabl)
.read mkwxtables.sql

View File

@@ -0,0 +1,114 @@
-- Create unique wx language mapping
create table if not exists wx_langmapuni (wxlangname char, wxlangid char, wxlocregion char, primary key (wxlangname));
delete from wx_langmapuni;
insert into wx_langmapuni select wxlangname, wxlangid, wxlocregion from wx_langmap;
-- Create mapping between wx and Windows ids
create table if not exists wx2winmapping (wxlocidnew char, wxnamenew char, wxlocidold char, wxnameold char, primary key (wxlocidnew));
delete from wx2winmapping;
insert into wx2winmapping select wt.wxlocid, wt.wxname, ifnull(wm.wxlangid,'-'), ifnull(wm.wxlangname,'-') from win_localetable wt
left join wx_langmapuni wm on wt.wxlocid=wm.wxlangid;
update wx2winmapping set wxlocidold = ifnull((select wxlangid from wx_langmapuni where wx_langmapuni.wxlangname=wx2winmapping.wxnamenew),'-') where wx2winmapping.wxlocidold='-';
-- Create mapping between language and country
create table if not exists lang2iso2 (lang char, iso2 char, wintag char, primary key (lang));
delete from lang2iso2;
insert into lang2iso2 select w.locid, w.locid||'_'||c.iso2, w.locid||'-'||c.iso2 from win_localetable w, uni_territorycodes c where w.locid not like '%-%' and w.country3=c.iso3;
-- Perform checks
.output temp/wxmissing.log
select '*** Missing via wx_langmapuni';
select wxlangname, wxlangid from wx_langmapuni where not exists (select wxnameold from wx2winmapping where wxnameold=wxlangname);
select '*** Missing via wx_langmap';
select wxlangname, wxlangid from wx_langmap where not exists (select wxname from win_localetable where wxname=wxlangname);
select '*** Missing locale tags in likely subtags mapping';
select locid from win_localetable w where length(w.locid) < 4 and not exists (select tagfrom from uni_likelysubtags s where s.tagfrom=w.locid);
.output stdout
select ' #missing wxlangmapuni =', count(wxlangname) from wx_langmapuni where not exists (select wxnameold from wx2winmapping where wxnameold=wxlangname);
select ' #matched wxlangmapuni =', count(wxlangname) from wx_langmapuni where exists (select wxnameold from wx2winmapping where wxnameold=wxlangname);
select ' #matched wx2win =', count(distinct wxnameold) from wx2winmapping where wxnameold <> '-';
select ' #missing likely tags =', count(locid) from win_localetable w where length(w.locid) < 4 and not exists (select tagfrom from uni_likelysubtags s where s.tagfrom=w.locid);
select ' #missing wxlangmap =', count(wxlangname) from wx_langmap where not exists (select wxname from win_localetable where wxname=wxlangname) and not exists (select wxnamesyn from wx_synonyms where wxnamesyn=wxlangname);
select wxlangname from wx_langmap where not exists (select wxname from win_localetable where wxname=wxlangname) and not exists (select wxnamesyn from wx_synonyms where wxnamesyn=wxlangname);
select wxname from win_localetable where exists (select wxnamesyn from wx_synonyms where wxnamesyn = win_localetable.wxname);
-- Generate references to previous wx mappings
update win_localetable set (wxlocidold, wxnameold) =
(select wxlocregion, wxlangname from wx_langmap m1 where m1.wxlangid=win_localetable.wxlocid);
-- Replace NULL values with strings ('-')
update win_localetable set wxlocidold = '-' where wxlocidold is null;
update win_localetable set wxnameold = '-' where wxnameold is null;
-- Adjust Windows language ids
--.changes on
update win_localetable as t1 set (idlang,idsublang) =
(t2.idlang, t2.idsublang) from win_localetable t2
where t1.wxlocid <> '-' and t2.wxlocid = t1.wxlocidold and (t1.idlang <> t2.idlang or t1.idsublang <> t2.idsublang);
--.changes off
-- Adjust canonical reference for language-only entries
update win_localetable as w1 set wxlocidold =
(select m.iso2 from win_localetable w, lang2iso2 m
where w.locid=w1.locid and w.locid=m.lang
and exists (select 1 from win_localetable w2 where w2.locid=m.wintag))
where w1.locid not like '%-%' and (w1.wxlocidold='-' or w1.wxlocidold is null);
update win_localetable set wxlocidold = '-' where wxlocidold is null;
-- Initialize parameter holding the current wx version
.parameter init
.print Set wx version parameter
.parameter set @wxversion "(select version from wx_version)"
.parameter list
-- Generate new list of languages
.output langtabl.txt
select printf('%-55s %-9s %-14s %-25s %-14s %-4s %-4s %s "%s","%s"',
w.wxname, ifnull(x.wxversion,@wxversion), w.locid, w.wxlocid, w.wxlocidold,
w.idlang, w.idsublang, w.layout, w.englishdisplay, w.nativedisplayhex)
from win_localetable w left join wx_langmap x on w.wxlocid = x.wxlangid order by w.wxname;
.output stdout
-- Generate new list of script mappings
-- Special handling for scripts Hans and Hant
update uni_scriptmap set scalias = lower(scalias) where scalias not in ('Hans','Hant');
.output scripttabl.txt
select printf('%-4s %s', sctag, scalias) from uni_scriptmap where scalias <> '-' order by sctag;
.output stdout
-- Generate new list of wxLANGUAGE synonyms
insert into wx_synonyms
select wl.wxnameold, wl.wxname, wl.locid, ifnull(wm.wxversion,@wxversion)
from win_localetable wl left join wx_langmap wm on wl.wxnameold = wm.wxlangname
where wl.wxnameold <> '-' and wl.wxname <> wl.wxnameold;
delete from wx_synonyms where wxnamesyn in (select wxname from win_localetable);
.output synonymtabl.txt
select printf('%-55s %-55s %-14s %s', wxnamesyn, wxnameprim, winlocid, wxversion) from wx_synonyms order by wxnamesyn;
.output stdout
-- Generate list of likely subtags
.output likelytabl.txt
select printf('%-11s %s', tagfrom, tagto) from uni_likelysubtags t where exists (select w.locid from win_localetable w where substr(w.locid,1,iif(instr(w.locid,'-')>0,instr(w.locid,'-')-1,length(w.locid))) = substr(t.tagfrom,1,iif(instr(t.tagfrom,'-')>0,instr(t.tagfrom,'-')-1,length(t.tagfrom)))) order by tagfrom;
.output stdout
-- Generate list of language matches
insert into uni_languagematch select supported, desired, distance, 'true' from uni_languagematch where oneway = 'false' and desired <> supported;
.output matchingtabl.txt
-- First all patterns without asterisks or variables
select printf('%-10s %-10s %3d', desired, supported, distance) from uni_languagematch t where desired not like ('%*%') and desired not like ('%$%') and exists (select w.locid from win_localetable w where substr(w.locid,1,iif(instr(w.locid,'-')>0,instr(w.locid,'-')-1,length(w.locid))) = substr(t.desired,1,iif(instr(t.desired,'-')>0,instr(t.desired,'-')-1,length(t.desired)))) order by desired;
-- Include patterns with asterisks, but without variables
select printf('%-10s %-10s %3d', desired, supported, distance) from uni_languagematch t where desired like ('%*%') and desired not like ('%$%') and supported not like ('%$%') order by desired;
.output stdout
-- Generate list of region groups for selected languages
.output regiongrouptabl.txt
select printf('%-8s %s', language, country) from uni_regiongroups order by language, country;
.output stdout

View File

@@ -0,0 +1,35 @@
-- Assign script arguments and check validity
fileName = arg[1]
assert(fileName ~= nil, "Filename parameter missing!")
fileNameTemp = fileName .. ".tmp"
function trim(s)
return s:match'^%s*(.*%S)' or ''
end
-- Remove whitespace from file
lastline = nil
prevlen = 0
fo2 = io.open(fileNameTemp,'wb')
for line in io.lines(fileName) do
newline = trim(line)
if lastline ~= nil then
lastlen = string.len(lastline)
if lastlen ~= 0 then
fo2:write(lastline .. "\n")
elseif prevlen ~=0 and lastlen == 0 then
fo2:write("\n")
end
prevlen = lastlen
end
lastline = newline
end
if string.len(lastline) > 0 then
fo2:write(lastline .. "\n")
end
fo2:close()
-- Remove original and replace it by the file with whitespace removed
os.remove(fileName)
os.rename(fileNameTemp, fileName)

View File

@@ -0,0 +1,12 @@
# Replace the wxWidgets data tables by new versions
echo "=== Replace previous versions with new versions..."
Copy-Item -Path "langtabl.txt" -Destination "..\langtabl.txt" -Force
Copy-Item -Path "scripttabl.txt" -Destination "..\scripttabl.txt" -Force
Copy-Item -Path "synonymtabl.txt" -Destination "..\synonymtabl.txt" -Force
Copy-Item -Path "likelytabl.txt" -Destination "..\likelytabl.txt" -Force
Copy-Item -Path "matchingtabl.txt" -Destination "..\matchingtabl.txt" -Force
Copy-Item -Path "regiongrouptabl.txt" -Destination "..\regiongrouptabl.txt" -Force
echo "-> wxWidgets language data tables replaced by new version."

View File

@@ -0,0 +1,11 @@
# Add tool paths to environment PATH variable
# It is necessary to add path of the Lua installation,
# because it is not properly set by the Chocolatey installation
$SYSPATH = [System.Environment]::GetEnvironmentVariable('PATH','machine')
$NEWPATH = "c:\ProgramData\chocolatey\lib\lua53\tools;$SYSPATH"
$env:path = $NEWPATH
# Define environment variable for the Lua shell
$env:luashell = "lua53"
echo "env:luashell is $env:luashell"

View File

@@ -0,0 +1,230 @@
#
# ISO 15924 - Codes for the representation of names of scripts
# Codes pour la représentation des noms décritures
# Format:
# Code;N°;English Name;Nom français;PVA;Unicode Version;Date
#
Adlm;166;Adlam;adlam;Adlam;9.0;2016-12-05
Afak;439;Afaka;afaka;;;2010-12-21
Aghb;239;Caucasian Albanian;aghbanien;Caucasian_Albanian;7.0;2014-11-15
Ahom;338;Ahom, Tai Ahom;âhom;Ahom;8.0;2015-07-07
Arab;160;Arabic;arabe;Arabic;1.1;2004-05-01
Aran;161;Arabic (Nastaliq variant);arabe (variante nastalique);;1.1;2014-11-15
Armi;124;Imperial Aramaic;araméen impérial;Imperial_Aramaic;5.2;2009-06-01
Armn;230;Armenian;arménien;Armenian;1.1;2004-05-01
Avst;134;Avestan;avestique;Avestan;5.2;2009-06-01
Bali;360;Balinese;balinais;Balinese;5.0;2006-10-10
Bamu;435;Bamum;bamoum;Bamum;5.2;2009-06-01
Bass;259;Bassa Vah;bassa;Bassa_Vah;7.0;2014-11-15
Batk;365;Batak;batak;Batak;6.0;2010-07-23
Beng;325;Bengali (Bangla);bengalî (bangla);Bengali;1.1;2016-12-05
Bhks;334;Bhaiksuki;bhaïksukî;Bhaiksuki;9.0;2016-12-05
Blis;550;Blissymbols;symboles Bliss;;;2004-05-01
Bopo;285;Bopomofo;bopomofo;Bopomofo;1.1;2004-05-01
Brah;300;Brahmi;brahma;Brahmi;6.0;2010-07-23
Brai;570;Braille;braille;Braille;3.0;2004-05-01
Bugi;367;Buginese;bouguis;Buginese;4.1;2006-06-21
Buhd;372;Buhid;bouhide;Buhid;3.2;2004-05-01
Cakm;349;Chakma;chakma;Chakma;6.1;2012-02-06
Cans;440;Unified Canadian Aboriginal Syllabics;syllabaire autochtone canadien unifié;Canadian_Aboriginal;3.0;2004-05-29
Cari;201;Carian;carien;Carian;5.1;2007-07-02
Cham;358;Cham;cham (čam, tcham);Cham;5.1;2009-11-11
Cher;445;Cherokee;tchérokî;Cherokee;3.0;2004-05-01
Chis;298;Chisoi;chisoi;;;2023-09-12
Chrs;109;Chorasmian;chorasmien;Chorasmian;13.0;2019-08-19
Cirt;291;Cirth;cirth;;;2004-05-01
Copt;204;Coptic;copte;Coptic;4.1;2006-06-21
Cpmn;402;Cypro-Minoan;syllabaire chypro-minoen;Cypro_Minoan;14.0;2017-07-26
Cprt;403;Cypriot syllabary;syllabaire chypriote;Cypriot;4.0;2017-07-26
Cyrl;220;Cyrillic;cyrillique;Cyrillic;1.1;2004-05-01
Cyrs;221;Cyrillic (Old Church Slavonic variant);cyrillique (variante slavonne);;1.1;2004-05-01
Deva;315;Devanagari (Nagari);dévanâgarî;Devanagari;1.1;2004-05-01
Diak;342;Dives Akuru;dives akuru;Dives_Akuru;13.0;2019-08-19
Dogr;328;Dogra;dogra;Dogra;11.0;2016-12-05
Dsrt;250;Deseret (Mormon);déseret (mormon);Deseret;3.1;2004-05-01
Dupl;755;Duployan shorthand, Duployan stenography;sténographie Duployé;Duployan;7.0;2014-11-15
Egyd;070;Egyptian demotic;démotique égyptien;;;2004-05-01
Egyh;060;Egyptian hieratic;hiératique égyptien;;5.2;2004-05-01
Egyp;050;Egyptian hieroglyphs;hiéroglyphes égyptiens;Egyptian_Hieroglyphs;5.2;2009-06-01
Elba;226;Elbasan;elbasan;Elbasan;7.0;2014-11-15
Elym;128;Elymaic;élymaïque;Elymaic;12.0;2018-08-26
Ethi;430;Ethiopic (Geʻez);éthiopien (geʻez, guèze);Ethiopic;3.0;2004-10-25
Gara;164;Garay;garay;;;2023-09-12
Geok;241;Khutsuri (Asomtavruli and Nuskhuri);khoutsouri (assomtavrouli et nouskhouri);Georgian;1.1;2012-10-16
Geor;240;Georgian (Mkhedruli and Mtavruli);géorgien (mkhédrouli et mtavrouli);Georgian;1.1;2016-12-05
Glag;225;Glagolitic;glagolitique;Glagolitic;4.1;2006-06-21
Gong;312;Gunjala Gondi;gunjala gondî;Gunjala_Gondi;11.0;2016-12-05
Gonm;313;Masaram Gondi;masaram gondî;Masaram_Gondi;10.0;2017-07-26
Goth;206;Gothic;gotique;Gothic;3.1;2004-05-01
Gran;343;Grantha;grantha;Grantha;7.0;2014-11-15
Grek;200;Greek;grec;Greek;1.1;2004-05-01
Gujr;320;Gujarati;goudjarâtî (gujrâtî);Gujarati;1.1;2004-05-01
Gukh;397;Gurung Khema;gurung khema;;;2023-09-12
Guru;310;Gurmukhi;gourmoukhî;Gurmukhi;1.1;2004-05-01
Hanb;503;Han with Bopomofo (alias for Han + Bopomofo);han avec bopomofo (alias pour han + bopomofo);;1.1;2016-01-19
Hang;286;Hangul (Hangŭl, Hangeul);hangûl (hangŭl, hangeul);Hangul;1.1;2004-05-29
Hani;500;Han (Hanzi, Kanji, Hanja);idéogrammes han (sinogrammes);Han;1.1;2009-02-23
Hano;371;Hanunoo (Hanunóo);hanounóo;Hanunoo;3.2;2004-05-29
Hans;501;Han (Simplified variant);idéogrammes han (variante simplifiée);;1.1;2004-05-29
Hant;502;Han (Traditional variant);idéogrammes han (variante traditionnelle);;1.1;2004-05-29
Hatr;127;Hatran;hatrénien;Hatran;8.0;2015-07-07
Hebr;125;Hebrew;hébreu;Hebrew;1.1;2004-05-01
Hira;410;Hiragana;hiragana;Hiragana;1.1;2004-05-01
Hluw;080;Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs);hiéroglyphes anatoliens (hiéroglyphes louvites, hiéroglyphes hittites);Anatolian_Hieroglyphs;8.0;2015-07-07
Hmng;450;Pahawh Hmong;pahawh hmong;Pahawh_Hmong;7.0;2014-11-15
Hmnp;451;Nyiakeng Puachue Hmong;nyiakeng puachue hmong;Nyiakeng_Puachue_Hmong;12.0;2017-07-26
Hrkt;412;Japanese syllabaries (alias for Hiragana + Katakana);syllabaires japonais (alias pour hiragana + katakana);Katakana_Or_Hiragana;1.1;2011-06-21
Hung;176;Old Hungarian (Hungarian Runic);runes hongroises (ancien hongrois);Old_Hungarian;8.0;2015-07-07
Inds;610;Indus (Harappan);indus;;;2004-05-01
Ital;210;Old Italic (Etruscan, Oscan, etc.);ancien italique (étrusque, osque, etc.);Old_Italic;3.1;2004-05-29
Jamo;284;Jamo (alias for Jamo subset of Hangul);jamo (alias pour le sous-ensemble jamo du hangûl);;1.1;2016-01-19
Java;361;Javanese;javanais;Javanese;5.2;2009-06-01
Jpan;413;Japanese (alias for Han + Hiragana + Katakana);japonais (alias pour han + hiragana + katakana);;1.1;2006-06-21
Jurc;510;Jurchen;jurchen;;;2010-12-21
Kali;357;Kayah Li;kayah li;Kayah_Li;5.1;2007-07-02
Kana;411;Katakana;katakana;Katakana;1.1;2004-05-01
Kawi;368;Kawi;kawi;Kawi;15.0;2021-12-03
Khar;305;Kharoshthi;kharochthî;Kharoshthi;4.1;2006-06-21
Khmr;355;Khmer;khmer;Khmer;3.0;2004-05-29
Khoj;322;Khojki;khojkî;Khojki;7.0;2014-11-15
Kitl;505;Khitan large script;grande écriture khitan;;;2015-07-15
Kits;288;Khitan small script;petite écriture khitan;Khitan_Small_Script;13.0;2015-07-15
Knda;345;Kannada;kannara (canara);Kannada;1.1;2004-05-29
Kore;287;Korean (alias for Hangul + Han);coréen (alias pour hangûl + han);;1.1;2007-06-13
Kpel;436;Kpelle;kpèllé;;;2010-03-26
Krai;396;Kirat Rai;kirat rai;;;2023-09-12
Kthi;317;Kaithi;kaithî;Kaithi;5.2;2009-06-01
Lana;351;Tai Tham (Lanna);taï tham (lanna);Tai_Tham;5.2;2009-06-01
Laoo;356;Lao;laotien;Lao;1.1;2004-05-01
Latf;217;Latin (Fraktur variant);latin (variante brisée);;1.1;2004-05-01
Latg;216;Latin (Gaelic variant);latin (variante gaélique);;1.1;2004-05-01
Latn;215;Latin;latin;Latin;1.1;2004-05-01
Leke;364;Leke;léké;;;2015-07-07
Lepc;335;Lepcha (Róng);lepcha (róng);Lepcha;5.1;2007-07-02
Limb;336;Limbu;limbou;Limbu;4.0;2004-05-29
Lina;400;Linear A;linéaire A;Linear_A;7.0;2014-11-15
Linb;401;Linear B;linéaire B;Linear_B;4.0;2004-05-29
Lisu;399;Lisu (Fraser);lisu (Fraser);Lisu;5.2;2009-06-01
Loma;437;Loma;loma;;;2010-03-26
Lyci;202;Lycian;lycien;Lycian;5.1;2007-07-02
Lydi;116;Lydian;lydien;Lydian;5.1;2007-07-02
Mahj;314;Mahajani;mahâjanî;Mahajani;7.0;2014-11-15
Maka;366;Makasar;makassar;Makasar;11.0;2016-12-05
Mand;140;Mandaic, Mandaean;mandéen;Mandaic;6.0;2010-07-23
Mani;139;Manichaean;manichéen;Manichaean;7.0;2014-11-15
Marc;332;Marchen;marchen;Marchen;9.0;2016-12-05
Maya;090;Mayan hieroglyphs;hiéroglyphes mayas;;;2004-05-01
Medf;265;Medefaidrin (Oberi Okaime, Oberi Ɔkaimɛ);médéfaïdrine;Medefaidrin;11.0;2016-12-05
Mend;438;Mende Kikakui;mendé kikakui;Mende_Kikakui;7.0;2014-11-15
Merc;101;Meroitic Cursive;cursif méroïtique;Meroitic_Cursive;6.1;2012-02-06
Mero;100;Meroitic Hieroglyphs;hiéroglyphes méroïtiques;Meroitic_Hieroglyphs;6.1;2012-02-06
Mlym;347;Malayalam;malayâlam;Malayalam;1.1;2004-05-01
Modi;324;Modi, Moḍī;modî;Modi;7.0;2014-11-15
Mong;145;Mongolian;mongol;Mongolian;3.0;2004-05-01
Moon;218;Moon (Moon code, Moon script, Moon type);écriture Moon;;;2006-12-11
Mroo;264;Mro, Mru;mro;Mro;7.0;2016-12-05
Mtei;337;Meitei Mayek (Meithei, Meetei);meitei mayek;Meetei_Mayek;5.2;2009-06-01
Mult;323;Multani;multanî;Multani;8.0;2015-07-07
Mymr;350;Myanmar (Burmese);birman;Myanmar;3.0;2004-05-01
Nagm;295;Nag Mundari;nag mundari;Nag_Mundari;15.0;2021-12-03
Nand;311;Nandinagari;nandinâgarî;Nandinagari;12.0;2018-08-26
Narb;106;Old North Arabian (Ancient North Arabian);nord-arabique;Old_North_Arabian;7.0;2014-11-15
Nbat;159;Nabataean;nabatéen;Nabataean;7.0;2014-11-15
Newa;333;Newa, Newar, Newari, Nepāla lipi;néwa, néwar, néwari, nepāla lipi;Newa;9.0;2016-12-05
Nkdb;085;Naxi Dongba (na²¹ɕi³³ to³³ba²¹, Nakhi Tomba);naxi dongba;;;2017-07-26
Nkgb;420;Naxi Geba (na²¹ɕi³³ gʌ²¹ba²¹, 'Na-'Khi ²Ggŏ-¹baw, Nakhi Geba);naxi geba, nakhi geba;;;2017-07-26
Nkoo;165;NKo;nko;Nko;5.0;2006-10-10
Nshu;499;Nüshu;nüshu;Nushu;10.0;2017-07-26
Ogam;212;Ogham;ogam;Ogham;3.0;2004-05-01
Olck;261;Ol Chiki (Ol Cemet, Ol, Santali);ol tchiki;Ol_Chiki;5.1;2007-07-02
Onao;296;Ol Onal;ol onal;;;2023-09-12
Orkh;175;Old Turkic, Orkhon Runic;orkhon;Old_Turkic;5.2;2009-06-01
Orya;327;Oriya (Odia);oriyâ (odia);Oriya;1.1;2016-12-05
Osge;219;Osage;osage;Osage;9.0;2016-12-05
Osma;260;Osmanya;osmanais;Osmanya;4.0;2004-05-01
Ougr;143;Old Uyghur;ancien ouïgour;Old_Uyghur;14.0;2021-01-25
Palm;126;Palmyrene;palmyrénien;Palmyrene;7.0;2014-11-15
Pauc;263;Pau Cin Hau;paou chin haou;Pau_Cin_Hau;7.0;2014-11-15
Pcun;015;Proto-Cuneiform;proto-cunéiforme;;;2021-01-25
Pelm;016;Proto-Elamite;proto-élamite;;;2021-01-25
Perm;227;Old Permic;ancien permien;Old_Permic;7.0;2014-11-15
Phag;331;Phags-pa;phags pa;Phags_Pa;5.0;2006-10-10
Phli;131;Inscriptional Pahlavi;pehlevi des inscriptions;Inscriptional_Pahlavi;5.2;2009-06-01
Phlp;132;Psalter Pahlavi;pehlevi des psautiers;Psalter_Pahlavi;7.0;2014-11-15
Phlv;133;Book Pahlavi;pehlevi des livres;;;2007-07-15
Phnx;115;Phoenician;phénicien;Phoenician;5.0;2006-10-10
Plrd;282;Miao (Pollard);miao (Pollard);Miao;6.1;2012-02-06
Piqd;293;Klingon (KLI pIqaD);klingon (pIqaD du KLI);;;2015-12-16
Prti;130;Inscriptional Parthian;parthe des inscriptions;Inscriptional_Parthian;5.2;2009-06-01
Psin;103;Proto-Sinaitic;proto-sinaïtique;;;2021-01-25
Qaaa;900;Reserved for private use (start);réservé à lusage privé (début);;;2004-05-29
Qabx;949;Reserved for private use (end);réservé à lusage privé (fin);;;2004-05-29
Ranj;303;Ranjana;ranjana;;;2021-01-25
Rjng;363;Rejang (Redjang, Kaganga);redjang (kaganga);Rejang;5.1;2009-02-23
Rohg;167;Hanifi Rohingya;hanifi rohingya;Hanifi_Rohingya;11.0;2017-11-21
Roro;620;Rongorongo;rongorongo;;;2004-05-01
Runr;211;Runic;runique;Runic;3.0;2004-05-01
Samr;123;Samaritan;samaritain;Samaritan;5.2;2009-06-01
Sara;292;Sarati;sarati;;;2004-05-29
Sarb;105;Old South Arabian;sud-arabique, himyarite;Old_South_Arabian;5.2;2009-06-01
Saur;344;Saurashtra;saurachtra;Saurashtra;5.1;2007-07-02
Sgnw;095;SignWriting;SignÉcriture, SignWriting;SignWriting;8.0;2015-07-07
Shaw;281;Shavian (Shaw);shavien (Shaw);Shavian;4.0;2004-05-01
Shrd;319;Sharada, Śāradā;charada, shard;Sharada;6.1;2012-02-06
Shui;530;Shuishu;shuishu;;;2017-07-26
Sidd;302;Siddham, Siddhaṃ, Siddhamātṛkā;siddham;Siddham;7.0;2014-11-15
Sidt;180;Sidetic;sidétique;;;2023-09-12
Sind;318;Khudawadi, Sindhi;khoudawadî, sindhî;Khudawadi;7.0;2014-11-15
Sinh;348;Sinhala;singhalais;Sinhala;3.0;2004-05-01
Sogd;141;Sogdian;sogdien;Sogdian;11.0;2017-11-21
Sogo;142;Old Sogdian;ancien sogdien;Old_Sogdian;11.0;2017-11-21
Sora;398;Sora Sompeng;sora sompeng;Sora_Sompeng;6.1;2012-02-06
Soyo;329;Soyombo;soyombo;Soyombo;10.0;2017-07-26
Sund;362;Sundanese;sundanais;Sundanese;5.1;2007-07-02
Sunu;274;Sunuwar;sunuwar;;;2021-12-03
Sylo;316;Syloti Nagri;sylotî nâgrî;Syloti_Nagri;4.1;2006-06-21
Syrc;135;Syriac;syriaque;Syriac;3.0;2004-05-01
Syre;138;Syriac (Estrangelo variant);syriaque (variante estranghélo);;3.0;2004-05-01
Syrj;137;Syriac (Western variant);syriaque (variante occidentale);;3.0;2004-05-01
Syrn;136;Syriac (Eastern variant);syriaque (variante orientale);;3.0;2004-05-01
Tagb;373;Tagbanwa;tagbanoua;Tagbanwa;3.2;2004-05-01
Takr;321;Takri, Ṭākrī, Ṭāṅkrī;tâkrî;Takri;6.1;2012-02-06
Tale;353;Tai Le;taï-le;Tai_Le;4.0;2004-10-25
Talu;354;New Tai Lue;nouveau taï-lue;New_Tai_Lue;4.1;2006-06-21
Taml;346;Tamil;tamoul;Tamil;1.1;2004-05-01
Tang;520;Tangut;tangoute;Tangut;9.0;2016-12-05
Tavt;359;Tai Viet;taï viêt;Tai_Viet;5.2;2009-06-01
Tayo;380;Tai Yo;taï yo;;;2023-09-12
Telu;340;Telugu;télougou;Telugu;1.1;2004-05-01
Teng;290;Tengwar;tengwar;;;2004-05-01
Tfng;120;Tifinagh (Berber);tifinagh (berbère);Tifinagh;4.1;2006-06-21
Tglg;370;Tagalog (Baybayin, Alibata);tagal (baybayin, alibata);Tagalog;3.2;2009-02-23
Thaa;170;Thaana;thâna;Thaana;3.0;2004-05-01
Thai;352;Thai;thaï;Thai;1.1;2004-05-01
Tibt;330;Tibetan;tibétain;Tibetan;2.0;2004-05-01
Tirh;326;Tirhuta;tirhouta;Tirhuta;7.0;2014-11-15
Tnsa;275;Tangsa;tangsa;Tangsa;14.0;2021-02-17
Todr;229;Todhri;todhri;;;2023-09-12
Tols;299;Tolong Siki;tolong siki;;;2023-09-12
Toto;294;Toto;toto;Toto;14.0;2020-04-16
Tutg;341;Tulu-Tigalari;tulu-tigalari;;;2023-09-12
Ugar;040;Ugaritic;ougaritique;Ugaritic;4.0;2004-05-01
Vaii;470;Vai;vaï;Vai;5.1;2007-07-02
Visp;280;Visible Speech;parole visible;;;2004-05-01
Vith;228;Vithkuqi;vithkuqi;Vithkuqi;14.0;2021-02-17
Wara;262;Warang Citi (Varang Kshiti);warang citi;Warang_Citi;7.0;2014-11-15
Wcho;283;Wancho;wantcho;Wancho;12.0;2017-07-26
Wole;480;Woleai;woléaï;;;2010-12-21
Xpeo;030;Old Persian;cunéiforme persépolitain;Old_Persian;4.1;2006-06-21
Xsux;020;Cuneiform, Sumero-Akkadian;cunéiforme suméro-akkadien;Cuneiform;5.0;2006-10-10
Yezi;192;Yezidi;yézidi;Yezidi;13.0;2019-08-19
Yiii;460;Yi;yi;Yi;3.0;2004-05-01
Zanb;339;Zanabazar Square (Zanabazarin Dörböljin Useg, Xewtee Dörböljin Bicig, Horizontal Square Script);zanabazar quadratique;Zanabazar_Square;10.0;2017-07-26
Zinh;994;Code for inherited script;codet pour écriture héritée;Inherited;;2009-02-23
Zmth;995;Mathematical notation;notation mathématique;;3.2;2007-11-26
Zsye;993;Symbols (Emoji variant);symboles (variante émoji);;6.0;2015-12-16
Zsym;996;Symbols;symboles;;1.1;2007-11-26
Zxxx;997;Code for unwritten documents;codet pour les documents non écrits;;;2011-06-21
Zyyy;998;Code for undetermined script;codet pour écriture indéterminée;Common;;2004-05-29
Zzzz;999;Code for uncoded script;codet pour écriture non codée;Unknown;;2006-10-10

View File

@@ -0,0 +1,454 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
<!--
Copyright © 1991-2020 Unicode, Inc.
CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
For terms of use, see http://www.unicode.org/copyright.html
-->
<supplementalData>
<version number="$Revision$"/>
<languageMatching>
<languageMatches type="written_new">
<paradigmLocales locales="en en_GB es es_419 pt_BR pt_PT"/>
<matchVariable id="$enUS" value="AS+CA+GU+MH+MP+PH+PR+UM+US+VI"/>
<matchVariable id="$cnsar" value="HK+MO"/>
<matchVariable id="$americas" value="019"/>
<matchVariable id="$maghreb" value="MA+DZ+TN+LY+MR+EH"/>
<languageMatch desired="nb" supported="no" distance="1"/> <!-- nb ⇒ no -->
<!-- languageMatch desired="ku" supported="ckb" distance="4" oneway="true"/ --> <!-- ku ⇒ ckb -->
<!-- languageMatch desired="ckb" supported="ku" percent="8" oneway="true"/ --> <!-- ckb ⇒ ku -->
<languageMatch desired="hr" supported="bs" distance="4"/> <!-- hr ⇒ bs -->
<languageMatch desired="sh" supported="bs" distance="4"/> <!-- sh ⇒ bs -->
<!-- languageMatch desired="sr" supported="bs" distance="4"/--> <!-- sr ⇒ bs -->
<languageMatch desired="sh" supported="hr" distance="4"/> <!-- sh ⇒ hr -->
<!-- languageMatch desired="sr" supported="hr" distance="4"/--> <!-- sr ⇒ hr -->
<languageMatch desired="sh" supported="sr" distance="4"/> <!-- sh ⇒ sr -->
<languageMatch desired="ssy" supported="aa" distance="4"/> <!-- ssy ⇒ aa -->
<languageMatch desired="gsw" supported="de" distance="4" oneway="true"/> <!-- gsw ⇒ de -->
<languageMatch desired="lb" supported="de" distance="4" oneway="true"/> <!-- lb ⇒ de -->
<languageMatch desired="da" supported="no" distance="8"/> <!-- da ⇒ no -->
<languageMatch desired="da" supported="nb" distance="8"/> <!-- da ⇒ nb -->
<!-- various fallbacks for more or less loosely related languages -->
<!-- CLDR-13528:
Distance 20 for some linguistic relation (e.g., Creoles to French)
or a local language in the area of another (e.g., Breton to French).
Distance 30 for fallbacks to prevalent second languages,
and in the absence of better information. -->
<languageMatch desired="ab" supported="ru" distance="30" oneway="true"/> <!-- Abkhazian: ab ⇒ ru -->
<languageMatch desired="ach" supported="en" distance="30" oneway="true"/> <!-- Acoli (Southern Luo dialect in Uganda): ach ⇒ en -->
<languageMatch desired="af" supported="nl" distance="20" oneway="true"/> <!-- Afrikaans: af ⇒ nl -->
<languageMatch desired="ak" supported="en" distance="30" oneway="true"/> <!-- Akan: ak ⇒ en -->
<languageMatch desired="am" supported="en" distance="30" oneway="true"/> <!-- Amharic ⇒ English -->
<languageMatch desired="ay" supported="es" distance="20" oneway="true"/> <!-- Aymara: ay ⇒ es -->
<languageMatch desired="az" supported="ru" distance="30" oneway="true"/> <!-- Azerbaijani: az ⇒ ru -->
<languageMatch desired="bal" supported="ur" distance="20" oneway="true"/> <!-- Baluchi ⇒ Urdu -->
<languageMatch desired="be" supported="ru" distance="20" oneway="true"/> <!-- Belarusian: be ⇒ ru -->
<languageMatch desired="bem" supported="en" distance="30" oneway="true"/> <!-- Bemba (Zambia): bem ⇒ en -->
<languageMatch desired="bh" supported="hi" distance="30" oneway="true"/> <!-- Bihari languages (gets canonicalized to bho): bh ⇒ hi -->
<languageMatch desired="bn" supported="en" distance="30" oneway="true"/> <!-- Bangla: bn ⇒ en -->
<languageMatch desired="bo" supported="zh" distance="20" oneway="true"/> <!-- Tibetan ⇒ Chinese -->
<languageMatch desired="br" supported="fr" distance="20" oneway="true"/> <!-- Breton: br ⇒ fr -->
<languageMatch desired="ca" supported="es" distance="20" oneway="true"/> <!-- Catalan ⇒ Spanish -->
<languageMatch desired="ceb" supported="fil" distance="30" oneway="true"/> <!-- Cebuano: ceb ⇒ fil -->
<languageMatch desired="chr" supported="en" distance="20" oneway="true"/> <!-- Cherokee: chr ⇒ en -->
<languageMatch desired="ckb" supported="ar" distance="30" oneway="true"/> <!-- Sorani Kurdish: ckb ⇒ ar -->
<languageMatch desired="co" supported="fr" distance="20" oneway="true"/> <!-- Corsican: co ⇒ fr -->
<languageMatch desired="crs" supported="fr" distance="20" oneway="true"/> <!-- Seselwa Creole French: crs ⇒ fr -->
<languageMatch desired="cs" supported="sk" distance="20"/> <!-- Czech ⇔ Slovak -->
<languageMatch desired="cy" supported="en" distance="20" oneway="true"/> <!-- Welsh: cy ⇒ en -->
<languageMatch desired="ee" supported="en" distance="30" oneway="true"/> <!-- Ewe: ee ⇒ en -->
<languageMatch desired="eo" supported="en" distance="30" oneway="true"/> <!-- Esperanto: eo ⇒ en -->
<!-- CLDR-13650: No fallback for Estonian -->
<!-- languageMatch desired="et" supported="fi" distance="30" oneway="true"/--> <!-- Estonian: et ⇒ fi -->
<languageMatch desired="eu" supported="es" distance="20" oneway="true"/> <!-- Basque: eu ⇒ es -->
<languageMatch desired="fo" supported="da" distance="20" oneway="true"/> <!-- Faroese: fo ⇒ da -->
<languageMatch desired="fy" supported="nl" distance="20" oneway="true"/> <!-- Western Frisian: fy ⇒ nl -->
<languageMatch desired="ga" supported="en" distance="20" oneway="true"/> <!-- Irish: ga ⇒ en -->
<languageMatch desired="gaa" supported="en" distance="30" oneway="true"/> <!-- Ga: gaa ⇒ en -->
<languageMatch desired="gd" supported="en" distance="20" oneway="true"/> <!-- Scottish Gaelic: gd ⇒ en -->
<languageMatch desired="gl" supported="es" distance="20" oneway="true"/> <!-- Galician: gl ⇒ es -->
<languageMatch desired="gn" supported="es" distance="20" oneway="true"/> <!-- Guarani: gn ⇒ es -->
<languageMatch desired="gu" supported="hi" distance="30" oneway="true"/> <!-- Gujarati: gu ⇒ hi -->
<languageMatch desired="ha" supported="en" distance="30" oneway="true"/> <!-- Hausa: ha ⇒ en -->
<languageMatch desired="haw" supported="en" distance="20" oneway="true"/> <!-- Hawaiian: haw ⇒ en -->
<languageMatch desired="ht" supported="fr" distance="20" oneway="true"/> <!-- Haitian Creole: ht ⇒ fr -->
<languageMatch desired="hy" supported="ru" distance="30" oneway="true"/> <!-- Armenian: hy ⇒ ru -->
<languageMatch desired="ia" supported="en" distance="30" oneway="true"/> <!-- Interlingua: ia ⇒ en -->
<languageMatch desired="ig" supported="en" distance="30" oneway="true"/> <!-- Igbo: ig ⇒ en -->
<languageMatch desired="is" supported="en" distance="20" oneway="true"/> <!-- Icelandic: is ⇒ en -->
<languageMatch desired="jv" supported="id" distance="20" oneway="true"/> <!-- Javanese: jv ⇒ id -->
<languageMatch desired="ka" supported="en" distance="30" oneway="true"/> <!-- Georgian: ka ⇒ en -->
<languageMatch desired="kg" supported="fr" distance="30" oneway="true"/> <!-- Kongo: kg ⇒ fr -->
<languageMatch desired="kk" supported="ru" distance="30" oneway="true"/> <!-- Kazakh: kk ⇒ ru -->
<languageMatch desired="km" supported="en" distance="30" oneway="true"/> <!-- Khmer: km ⇒ en -->
<languageMatch desired="kn" supported="en" distance="30" oneway="true"/> <!-- Kannada: kn ⇒ en -->
<languageMatch desired="kri" supported="en" distance="30" oneway="true"/> <!-- Krio: kri ⇒ en -->
<languageMatch desired="ku" supported="tr" distance="30" oneway="true"/> <!-- Kurdish: ku ⇒ tr -->
<languageMatch desired="ky" supported="ru" distance="30" oneway="true"/> <!-- Kirghiz: ky ⇒ ru -->
<languageMatch desired="la" supported="it" distance="20" oneway="true"/> <!-- Latin: la ⇒ it -->
<languageMatch desired="lg" supported="en" distance="30" oneway="true"/> <!-- Luganda: lg ⇒ en -->
<languageMatch desired="ln" supported="fr" distance="30" oneway="true"/> <!-- Lingala: ln ⇒ fr -->
<languageMatch desired="lo" supported="en" distance="30" oneway="true"/> <!-- Lao: lo ⇒ en -->
<languageMatch desired="loz" supported="en" distance="30" oneway="true"/> <!-- Lozi: loz ⇒ en -->
<languageMatch desired="lua" supported="fr" distance="30" oneway="true"/> <!-- Luba-Lulua: lua ⇒ fr -->
<languageMatch desired="mai" supported="hi" distance="20" oneway="true"/> <!-- Maithili ⇒ Hindi -->
<languageMatch desired="mfe" supported="en" distance="30" oneway="true"/> <!-- Morisyen: mfe ⇒ en -->
<languageMatch desired="mg" supported="fr" distance="30" oneway="true"/> <!-- Malagasy: mg ⇒ fr -->
<languageMatch desired="mi" supported="en" distance="20" oneway="true"/> <!-- Māori: mi ⇒ en -->
<!-- CLDR-13625: Macedonian should not fall back to Bulgarian -->
<!-- languageMatch desired="mk" supported="bg" distance="30" oneway="true"/--> <!-- Macedonian: mk ⇒ bg -->
<languageMatch desired="ml" supported="en" distance="30" oneway="true"/> <!-- Malayalam: ml ⇒ en -->
<languageMatch desired="mn" supported="ru" distance="30" oneway="true"/> <!-- Mongolian: mn ⇒ ru -->
<languageMatch desired="mr" supported="hi" distance="30" oneway="true"/> <!-- Marathi: mr ⇒ hi -->
<languageMatch desired="ms" supported="id" distance="30" oneway="true"/> <!-- Malay: ms ⇒ id -->
<languageMatch desired="mt" supported="en" distance="30" oneway="true"/> <!-- Maltese: mt ⇒ en -->
<languageMatch desired="my" supported="en" distance="30" oneway="true"/> <!-- Myanmar: my ⇒ en -->
<languageMatch desired="ne" supported="en" distance="30" oneway="true"/> <!-- Nepali: ne ⇒ en -->
<languageMatch desired="nn" supported="nb" distance="20"/> <!-- Nynorsk: nn ⟺ nb -->
<languageMatch desired="nn" supported="no" distance="20"/> <!-- Nynorsk: nn ⟺ no; CLDR-13679 -->
<languageMatch desired="nso" supported="en" distance="30" oneway="true"/> <!-- Northern Sotho: nso ⇒ en -->
<languageMatch desired="ny" supported="en" distance="30" oneway="true"/> <!-- Nyanja: ny ⇒ en -->
<languageMatch desired="nyn" supported="en" distance="30" oneway="true"/> <!-- Nyankole: nyn ⇒ en -->
<languageMatch desired="oc" supported="fr" distance="20" oneway="true"/> <!-- Occitan: oc ⇒ fr -->
<languageMatch desired="om" supported="en" distance="30" oneway="true"/> <!-- Oromo: om ⇒ en -->
<languageMatch desired="or" supported="en" distance="30" oneway="true"/> <!-- Odia: or ⇒ en -->
<languageMatch desired="pa" supported="en" distance="30" oneway="true"/> <!-- Punjabi: pa ⇒ en -->
<languageMatch desired="pcm" supported="en" distance="20" oneway="true"/> <!-- Nigerian Pidgin: pcm ⇒ en -->
<languageMatch desired="ps" supported="en" distance="30" oneway="true"/> <!-- Pashto: ps ⇒ en -->
<languageMatch desired="qu" supported="es" distance="30" oneway="true"/> <!-- Quechua: qu ⇒ es -->
<languageMatch desired="rm" supported="de" distance="20" oneway="true"/> <!-- Romansh: rm ⇒ de -->
<languageMatch desired="rn" supported="en" distance="30" oneway="true"/> <!-- Rundi: rn ⇒ en -->
<languageMatch desired="rw" supported="fr" distance="30" oneway="true"/> <!-- Kinyarwanda: rw ⇒ fr -->
<languageMatch desired="sa" supported="hi" distance="30" oneway="true"/> <!-- Sanskrit: sa ⇒ hi -->
<languageMatch desired="scn" supported="it" distance="20" oneway="true"/> <!-- Sicilian: scn ⇒ it -->
<languageMatch desired="sd" supported="en" distance="30" oneway="true"/> <!-- Sindhi: sd ⇒ en -->
<languageMatch desired="si" supported="en" distance="30" oneway="true"/> <!-- Sinhalese: si ⇒ en -->
<languageMatch desired="sn" supported="en" distance="30" oneway="true"/> <!-- Shona: sn ⇒ en -->
<languageMatch desired="so" supported="en" distance="30" oneway="true"/> <!-- Somali: so ⇒ en -->
<languageMatch desired="sq" supported="en" distance="30" oneway="true"/> <!-- Albanian: sq ⇒ en -->
<languageMatch desired="st" supported="en" distance="30" oneway="true"/> <!-- Southern Sotho: st ⇒ en -->
<languageMatch desired="su" supported="id" distance="20" oneway="true"/> <!-- Sundanese: su ⇒ id -->
<languageMatch desired="sw" supported="en" distance="30" oneway="true"/> <!-- Swahili: sw ⇒ en -->
<languageMatch desired="ta" supported="en" distance="30" oneway="true"/> <!-- Tamil: ta ⇒ en -->
<languageMatch desired="te" supported="en" distance="30" oneway="true"/> <!-- Telugu: te ⇒ en -->
<languageMatch desired="tg" supported="ru" distance="30" oneway="true"/> <!-- Tajik: tg ⇒ ru -->
<languageMatch desired="ti" supported="en" distance="30" oneway="true"/> <!-- Tigrinya: ti ⇒ en -->
<languageMatch desired="tk" supported="ru" distance="30" oneway="true"/> <!-- Turkmen: tk ⇒ ru -->
<languageMatch desired="tlh" supported="en" distance="30" oneway="true"/> <!-- Klingon: tlh ⇒ en -->
<languageMatch desired="tn" supported="en" distance="30" oneway="true"/> <!-- Tswana: tn ⇒ en -->
<languageMatch desired="to" supported="en" distance="30" oneway="true"/> <!-- Tonga: to ⇒ en -->
<languageMatch desired="tt" supported="ru" distance="30" oneway="true"/> <!-- Tatar: tt ⇒ ru -->
<languageMatch desired="tum" supported="en" distance="30" oneway="true"/> <!-- Tumbuka: tum ⇒ en -->
<languageMatch desired="ug" supported="zh" distance="20" oneway="true"/> <!-- Uighur: ug ⇒ zh -->
<!-- CLDR-17382: Ukrainian should not fall back to Russian -->
<!-- languageMatch desired="uk" supported="ru" distance="20" oneway="true"/--> <!-- Ukrainian ⇒ Russian -->
<languageMatch desired="ur" supported="en" distance="30" oneway="true"/> <!-- Urdu: ur ⇒ en -->
<languageMatch desired="uz" supported="ru" distance="30" oneway="true"/> <!-- Uzbek: uz ⇒ ru -->
<languageMatch desired="wo" supported="fr" distance="30" oneway="true"/> <!-- Wolof: wo ⇒ fr -->
<languageMatch desired="xh" supported="en" distance="30" oneway="true"/> <!-- Xhosa: xh ⇒ en -->
<languageMatch desired="yi" supported="en" distance="30" oneway="true"/> <!-- Yiddish: yi ⇒ en -->
<languageMatch desired="yo" supported="en" distance="30" oneway="true"/> <!-- Yoruba: yo ⇒ en -->
<languageMatch desired="za" supported="zh" distance="20" oneway="true"/> <!-- Zhuang languages ⇒ Chinese -->
<languageMatch desired="zu" supported="en" distance="30" oneway="true"/> <!-- Zulu: zu ⇒ en -->
<!-- START generated by GenerateLanguageMatches.java: don't manually change -->
<!-- Encompassed by Arabic -->
<languageMatch desired="aao" supported="ar" distance="10" oneway="true"/> <!-- Algerian Saharan Arabic -->
<languageMatch desired="abh" supported="ar" distance="10" oneway="true"/> <!-- Tajiki Arabic -->
<languageMatch desired="abv" supported="ar" distance="10" oneway="true"/> <!-- Baharna Arabic -->
<languageMatch desired="acm" supported="ar" distance="10" oneway="true"/> <!-- Mesopotamian Arabic -->
<languageMatch desired="acq" supported="ar" distance="10" oneway="true"/> <!-- Ta'izzi-Adeni Arabic -->
<languageMatch desired="acw" supported="ar" distance="10" oneway="true"/> <!-- Hijazi Arabic -->
<languageMatch desired="acx" supported="ar" distance="10" oneway="true"/> <!-- Omani Arabic -->
<languageMatch desired="acy" supported="ar" distance="10" oneway="true"/> <!-- Cypriot Arabic -->
<languageMatch desired="adf" supported="ar" distance="10" oneway="true"/> <!-- Dhofari Arabic -->
<languageMatch desired="aeb" supported="ar" distance="10" oneway="true"/> <!-- Tunisian Arabic -->
<languageMatch desired="aec" supported="ar" distance="10" oneway="true"/> <!-- Saidi Arabic -->
<languageMatch desired="afb" supported="ar" distance="10" oneway="true"/> <!-- Gulf Arabic -->
<languageMatch desired="apc" supported="ar" distance="10" oneway="true"/> <!-- North Levantine Arabic -->
<languageMatch desired="apd" supported="ar" distance="10" oneway="true"/> <!-- Sudanese Arabic -->
<languageMatch desired="arq" supported="ar" distance="10" oneway="true"/> <!-- Algerian Arabic -->
<languageMatch desired="ars" supported="ar" distance="10" oneway="true"/> <!-- Najdi Arabic -->
<languageMatch desired="ary" supported="ar" distance="10" oneway="true"/> <!-- Moroccan Arabic -->
<languageMatch desired="arz" supported="ar" distance="10" oneway="true"/> <!-- Egyptian Arabic -->
<languageMatch desired="auz" supported="ar" distance="10" oneway="true"/> <!-- Uzbeki Arabic -->
<languageMatch desired="avl" supported="ar" distance="10" oneway="true"/> <!-- Eastern Egyptian Bedawi Arabic -->
<languageMatch desired="ayh" supported="ar" distance="10" oneway="true"/> <!-- Hadrami Arabic -->
<languageMatch desired="ayl" supported="ar" distance="10" oneway="true"/> <!-- Libyan Arabic -->
<languageMatch desired="ayn" supported="ar" distance="10" oneway="true"/> <!-- Sanaani Arabic -->
<languageMatch desired="ayp" supported="ar" distance="10" oneway="true"/> <!-- North Mesopotamian Arabic -->
<languageMatch desired="bbz" supported="ar" distance="10" oneway="true"/> <!-- Babalia Creole Arabic -->
<languageMatch desired="pga" supported="ar" distance="10" oneway="true"/> <!-- Sudanese Creole Arabic -->
<languageMatch desired="shu" supported="ar" distance="10" oneway="true"/> <!-- Chadian Arabic -->
<languageMatch desired="ssh" supported="ar" distance="10" oneway="true"/> <!-- Shihhi Arabic -->
<!-- Encompassed by Azerbaijani -->
<languageMatch desired="azb" supported="az" distance="10" oneway="true"/> <!-- South Azerbaijani -->
<!-- Encompassed by Estonian -->
<languageMatch desired="vro" supported="et" distance="10" oneway="true"/> <!-- Võro -->
<!-- Encompassed by Fulah -->
<languageMatch desired="ffm" supported="ff" distance="10" oneway="true"/> <!-- Maasina Fulfulde -->
<languageMatch desired="fub" supported="ff" distance="10" oneway="true"/> <!-- Adamawa Fulfulde -->
<languageMatch desired="fue" supported="ff" distance="10" oneway="true"/> <!-- Borgu Fulfulde -->
<languageMatch desired="fuf" supported="ff" distance="10" oneway="true"/> <!-- Pular -->
<languageMatch desired="fuh" supported="ff" distance="10" oneway="true"/> <!-- Western Niger Fulfulde -->
<languageMatch desired="fui" supported="ff" distance="10" oneway="true"/> <!-- Bagirmi Fulfulde -->
<languageMatch desired="fuq" supported="ff" distance="10" oneway="true"/> <!-- Central-Eastern Niger Fulfulde -->
<languageMatch desired="fuv" supported="ff" distance="10" oneway="true"/> <!-- Nigerian Fulfulde -->
<!-- Encompassed by Guarani -->
<languageMatch desired="gnw" supported="gn" distance="10" oneway="true"/> <!-- Western Bolivian Guaraní -->
<languageMatch desired="gui" supported="gn" distance="10" oneway="true"/> <!-- Eastern Bolivian Guaraní -->
<languageMatch desired="gun" supported="gn" distance="10" oneway="true"/> <!-- Mbyá Guaraní -->
<languageMatch desired="nhd" supported="gn" distance="10" oneway="true"/> <!-- Chiripá -->
<!-- Encompassed by Inuktitut -->
<languageMatch desired="ikt" supported="iu" distance="10" oneway="true"/> <!-- Inuinnaqtun -->
<!-- Encompassed by Kalenjin -->
<languageMatch desired="enb" supported="kln" distance="10" oneway="true"/> <!-- Markweeta -->
<languageMatch desired="eyo" supported="kln" distance="10" oneway="true"/> <!-- Keiyo -->
<languageMatch desired="niq" supported="kln" distance="10" oneway="true"/> <!-- Nandi -->
<languageMatch desired="oki" supported="kln" distance="10" oneway="true"/> <!-- Okiek -->
<languageMatch desired="pko" supported="kln" distance="10" oneway="true"/> <!-- Pökoot -->
<languageMatch desired="sgc" supported="kln" distance="10" oneway="true"/> <!-- Kipsigis -->
<languageMatch desired="tec" supported="kln" distance="10" oneway="true"/> <!-- Terik -->
<languageMatch desired="tuy" supported="kln" distance="10" oneway="true"/> <!-- Tugen -->
<!-- Encompassed by Konkani -->
<languageMatch desired="knn" supported="kok" distance="10" oneway="true"/> <!-- Maharashtrian Konkani -->
<!-- Encompassed by Kpelle -->
<languageMatch desired="gkp" supported="kpe" distance="10" oneway="true"/> <!-- Guinea Kpelle -->
<!-- Encompassed by Luyia -->
<languageMatch desired="ida" supported="luy" distance="10" oneway="true"/> <!-- Idakho-Isukha-Tiriki -->
<languageMatch desired="lkb" supported="luy" distance="10" oneway="true"/> <!-- Kabras -->
<languageMatch desired="lko" supported="luy" distance="10" oneway="true"/> <!-- Khayo -->
<languageMatch desired="lks" supported="luy" distance="10" oneway="true"/> <!-- Kisa -->
<languageMatch desired="lri" supported="luy" distance="10" oneway="true"/> <!-- Marachi -->
<languageMatch desired="lrm" supported="luy" distance="10" oneway="true"/> <!-- Marama -->
<languageMatch desired="lsm" supported="luy" distance="10" oneway="true"/> <!-- Saamia -->
<languageMatch desired="lto" supported="luy" distance="10" oneway="true"/> <!-- Tsotso -->
<languageMatch desired="lts" supported="luy" distance="10" oneway="true"/> <!-- Tachoni -->
<languageMatch desired="lwg" supported="luy" distance="10" oneway="true"/> <!-- Wanga -->
<languageMatch desired="nle" supported="luy" distance="10" oneway="true"/> <!-- East Nyala -->
<languageMatch desired="nyd" supported="luy" distance="10" oneway="true"/> <!-- Nyore -->
<languageMatch desired="rag" supported="luy" distance="10" oneway="true"/> <!-- Logooli -->
<!-- Encompassed by Latvian -->
<languageMatch desired="ltg" supported="lv" distance="10" oneway="true"/> <!-- Latgalian -->
<!-- Encompassed by Malagasy -->
<languageMatch desired="bhr" supported="mg" distance="10" oneway="true"/> <!-- Bara Malagasy -->
<languageMatch desired="bjq" supported="mg" distance="10" oneway="true"/> <!-- Southern Betsimisaraka Malagasy -->
<languageMatch desired="bmm" supported="mg" distance="10" oneway="true"/> <!-- Northern Betsimisaraka Malagasy -->
<languageMatch desired="bzc" supported="mg" distance="10" oneway="true"/> <!-- Southern Betsimisaraka Malagasy -->
<languageMatch desired="msh" supported="mg" distance="10" oneway="true"/> <!-- Masikoro Malagasy -->
<languageMatch desired="skg" supported="mg" distance="10" oneway="true"/> <!-- Sakalava Malagasy -->
<languageMatch desired="tdx" supported="mg" distance="10" oneway="true"/> <!-- Tandroy-Mahafaly Malagasy -->
<languageMatch desired="tkg" supported="mg" distance="10" oneway="true"/> <!-- Tesaka Malagasy -->
<languageMatch desired="txy" supported="mg" distance="10" oneway="true"/> <!-- Tanosy Malagasy -->
<languageMatch desired="xmv" supported="mg" distance="10" oneway="true"/> <!-- Antankarana Malagasy -->
<languageMatch desired="xmw" supported="mg" distance="10" oneway="true"/> <!-- Tsimihety Malagasy -->
<!-- Encompassed by Mongolian -->
<languageMatch desired="mvf" supported="mn" distance="10" oneway="true"/> <!-- Peripheral Mongolian -->
<!-- Encompassed by Malay -->
<languageMatch desired="bjn" supported="ms" distance="10" oneway="true"/> <!-- Banjar -->
<languageMatch desired="btj" supported="ms" distance="10" oneway="true"/> <!-- Bacanese Malay -->
<languageMatch desired="bve" supported="ms" distance="10" oneway="true"/> <!-- Berau Malay -->
<languageMatch desired="bvu" supported="ms" distance="10" oneway="true"/> <!-- Bukit Malay -->
<languageMatch desired="coa" supported="ms" distance="10" oneway="true"/> <!-- Cocos Islands Malay -->
<languageMatch desired="dup" supported="ms" distance="10" oneway="true"/> <!-- Duano -->
<languageMatch desired="hji" supported="ms" distance="10" oneway="true"/> <!-- Haji -->
<languageMatch desired="id" supported="ms" distance="10" oneway="true"/> <!-- Indonesian -->
<languageMatch desired="jak" supported="ms" distance="10" oneway="true"/> <!-- Jakun -->
<languageMatch desired="jax" supported="ms" distance="10" oneway="true"/> <!-- Jambi Malay -->
<languageMatch desired="kvb" supported="ms" distance="10" oneway="true"/> <!-- Kubu -->
<languageMatch desired="kvr" supported="ms" distance="10" oneway="true"/> <!-- Kerinci -->
<languageMatch desired="kxd" supported="ms" distance="10" oneway="true"/> <!-- Brunei -->
<languageMatch desired="lce" supported="ms" distance="10" oneway="true"/> <!-- Loncong -->
<languageMatch desired="lcf" supported="ms" distance="10" oneway="true"/> <!-- Lubu -->
<languageMatch desired="liw" supported="ms" distance="10" oneway="true"/> <!-- Col -->
<languageMatch desired="max" supported="ms" distance="10" oneway="true"/> <!-- North Moluccan Malay -->
<languageMatch desired="meo" supported="ms" distance="10" oneway="true"/> <!-- Kedah Malay -->
<languageMatch desired="mfa" supported="ms" distance="10" oneway="true"/> <!-- Pattani Malay -->
<languageMatch desired="mfb" supported="ms" distance="10" oneway="true"/> <!-- Bangka -->
<languageMatch desired="min" supported="ms" distance="10" oneway="true"/> <!-- Minangkabau -->
<languageMatch desired="mqg" supported="ms" distance="10" oneway="true"/> <!-- Kota Bangun Kutai Malay -->
<languageMatch desired="msi" supported="ms" distance="10" oneway="true"/> <!-- Sabah Malay -->
<languageMatch desired="mui" supported="ms" distance="10" oneway="true"/> <!-- Musi -->
<languageMatch desired="orn" supported="ms" distance="10" oneway="true"/> <!-- Orang Kanaq -->
<languageMatch desired="ors" supported="ms" distance="10" oneway="true"/> <!-- Orang Seletar -->
<languageMatch desired="pel" supported="ms" distance="10" oneway="true"/> <!-- Pekal -->
<languageMatch desired="pse" supported="ms" distance="10" oneway="true"/> <!-- Central Malay -->
<languageMatch desired="tmw" supported="ms" distance="10" oneway="true"/> <!-- Temuan -->
<languageMatch desired="urk" supported="ms" distance="10" oneway="true"/> <!-- Urak Lawoi' -->
<languageMatch desired="vkk" supported="ms" distance="10" oneway="true"/> <!-- Kaur -->
<languageMatch desired="vkt" supported="ms" distance="10" oneway="true"/> <!-- Tenggarong Kutai Malay -->
<languageMatch desired="xmm" supported="ms" distance="10" oneway="true"/> <!-- Manado Malay -->
<languageMatch desired="zlm" supported="ms" distance="10" oneway="true"/> <!-- Malay (individual language) -->
<languageMatch desired="zmi" supported="ms" distance="10" oneway="true"/> <!-- Negeri Sembilan Malay -->
<!-- Encompassed by Nepali -->
<languageMatch desired="dty" supported="ne" distance="10" oneway="true"/> <!-- Dotyali -->
<!-- Encompassed by Oromo -->
<languageMatch desired="gax" supported="om" distance="10" oneway="true"/> <!-- Borana-Arsi-Guji Oromo -->
<languageMatch desired="hae" supported="om" distance="10" oneway="true"/> <!-- Eastern Oromo -->
<languageMatch desired="orc" supported="om" distance="10" oneway="true"/> <!-- Orma -->
<!-- Encompassed by Odia -->
<languageMatch desired="spv" supported="or" distance="10" oneway="true"/> <!-- Sambalpuri -->
<!-- Encompassed by Pashto -->
<languageMatch desired="pbt" supported="ps" distance="10" oneway="true"/> <!-- Southern Pashto -->
<languageMatch desired="pst" supported="ps" distance="10" oneway="true"/> <!-- Central Pashto -->
<!-- Encompassed by Quechua -->
<languageMatch desired="qub" supported="qu" distance="10" oneway="true"/> <!-- Huallaga Huánuco Quechua -->
<languageMatch desired="qud" supported="qu" distance="10" oneway="true"/> <!-- Calderón Highland Quichua -->
<languageMatch desired="quf" supported="qu" distance="10" oneway="true"/> <!-- Lambayeque Quechua -->
<languageMatch desired="qug" supported="qu" distance="10" oneway="true"/> <!-- Chimborazo Highland Quichua -->
<languageMatch desired="quh" supported="qu" distance="10" oneway="true"/> <!-- South Bolivian Quechua -->
<languageMatch desired="quk" supported="qu" distance="10" oneway="true"/> <!-- Chachapoyas Quechua -->
<languageMatch desired="qul" supported="qu" distance="10" oneway="true"/> <!-- North Bolivian Quechua -->
<languageMatch desired="qup" supported="qu" distance="10" oneway="true"/> <!-- Southern Pastaza Quechua -->
<languageMatch desired="qur" supported="qu" distance="10" oneway="true"/> <!-- Yanahuanca Pasco Quechua -->
<languageMatch desired="qus" supported="qu" distance="10" oneway="true"/> <!-- Santiago del Estero Quichua -->
<languageMatch desired="quw" supported="qu" distance="10" oneway="true"/> <!-- Tena Lowland Quichua -->
<languageMatch desired="qux" supported="qu" distance="10" oneway="true"/> <!-- Yauyos Quechua -->
<languageMatch desired="quy" supported="qu" distance="10" oneway="true"/> <!-- Ayacucho Quechua -->
<languageMatch desired="qva" supported="qu" distance="10" oneway="true"/> <!-- Ambo-Pasco Quechua -->
<languageMatch desired="qvc" supported="qu" distance="10" oneway="true"/> <!-- Cajamarca Quechua -->
<languageMatch desired="qve" supported="qu" distance="10" oneway="true"/> <!-- Eastern Apurímac Quechua -->
<languageMatch desired="qvh" supported="qu" distance="10" oneway="true"/> <!-- Huamalíes-Dos de Mayo Huánuco Quechua -->
<languageMatch desired="qvi" supported="qu" distance="10" oneway="true"/> <!-- Imbabura Highland Quichua -->
<languageMatch desired="qvj" supported="qu" distance="10" oneway="true"/> <!-- Loja Highland Quichua -->
<languageMatch desired="qvl" supported="qu" distance="10" oneway="true"/> <!-- Cajatambo North Lima Quechua -->
<languageMatch desired="qvm" supported="qu" distance="10" oneway="true"/> <!-- Margos-Yarowilca-Lauricocha Quechua -->
<languageMatch desired="qvn" supported="qu" distance="10" oneway="true"/> <!-- North Junín Quechua -->
<languageMatch desired="qvo" supported="qu" distance="10" oneway="true"/> <!-- Napo Lowland Quechua -->
<languageMatch desired="qvp" supported="qu" distance="10" oneway="true"/> <!-- Pacaraos Quechua -->
<languageMatch desired="qvs" supported="qu" distance="10" oneway="true"/> <!-- San Martín Quechua -->
<languageMatch desired="qvw" supported="qu" distance="10" oneway="true"/> <!-- Huaylla Wanca Quechua -->
<languageMatch desired="qvz" supported="qu" distance="10" oneway="true"/> <!-- Northern Pastaza Quichua -->
<languageMatch desired="qwa" supported="qu" distance="10" oneway="true"/> <!-- Corongo Ancash Quechua -->
<languageMatch desired="qwc" supported="qu" distance="10" oneway="true"/> <!-- Classical Quechua -->
<languageMatch desired="qwh" supported="qu" distance="10" oneway="true"/> <!-- Huaylas Ancash Quechua -->
<languageMatch desired="qws" supported="qu" distance="10" oneway="true"/> <!-- Sihuas Ancash Quechua -->
<languageMatch desired="qxa" supported="qu" distance="10" oneway="true"/> <!-- Chiquián Ancash Quechua -->
<languageMatch desired="qxc" supported="qu" distance="10" oneway="true"/> <!-- Chincha Quechua -->
<languageMatch desired="qxh" supported="qu" distance="10" oneway="true"/> <!-- Panao Huánuco Quechua -->
<languageMatch desired="qxl" supported="qu" distance="10" oneway="true"/> <!-- Salasaca Highland Quichua -->
<languageMatch desired="qxn" supported="qu" distance="10" oneway="true"/> <!-- Northern Conchucos Ancash Quechua -->
<languageMatch desired="qxo" supported="qu" distance="10" oneway="true"/> <!-- Southern Conchucos Ancash Quechua -->
<languageMatch desired="qxp" supported="qu" distance="10" oneway="true"/> <!-- Puno Quechua -->
<languageMatch desired="qxr" supported="qu" distance="10" oneway="true"/> <!-- Cañar Highland Quichua -->
<languageMatch desired="qxt" supported="qu" distance="10" oneway="true"/> <!-- Santa Ana de Tusi Pasco Quechua -->
<languageMatch desired="qxu" supported="qu" distance="10" oneway="true"/> <!-- Arequipa-La Unión Quechua -->
<languageMatch desired="qxw" supported="qu" distance="10" oneway="true"/> <!-- Jauja Wanca Quechua -->
<!-- Encompassed by Sardinian -->
<languageMatch desired="sdc" supported="sc" distance="10" oneway="true"/> <!-- Sassarese Sardinian -->
<languageMatch desired="sdn" supported="sc" distance="10" oneway="true"/> <!-- Gallurese Sardinian -->
<languageMatch desired="sro" supported="sc" distance="10" oneway="true"/> <!-- Campidanese Sardinian -->
<!-- Encompassed by Albanian -->
<languageMatch desired="aae" supported="sq" distance="10" oneway="true"/> <!-- Arbëreshë Albanian -->
<languageMatch desired="aat" supported="sq" distance="10" oneway="true"/> <!-- Arvanitika Albanian -->
<languageMatch desired="aln" supported="sq" distance="10" oneway="true"/> <!-- Gheg Albanian -->
<!-- Encompassed by Syriac -->
<languageMatch desired="aii" supported="syr" distance="10" oneway="true"/> <!-- Assyrian Neo-Aramaic -->
<!-- Encompassed by Uzbek -->
<languageMatch desired="uzs" supported="uz" distance="10" oneway="true"/> <!-- Southern Uzbek -->
<!-- Encompassed by Yiddish -->
<languageMatch desired="yih" supported="yi" distance="10" oneway="true"/> <!-- Western Yiddish -->
<!-- Encompassed by Chinese, Mandarin -->
<languageMatch desired="cdo" supported="zh" distance="10" oneway="true"/> <!-- Min Dong Chinese -->
<languageMatch desired="cjy" supported="zh" distance="10" oneway="true"/> <!-- Jinyu Chinese -->
<languageMatch desired="cpx" supported="zh" distance="10" oneway="true"/> <!-- Pu-Xian Chinese -->
<languageMatch desired="czh" supported="zh" distance="10" oneway="true"/> <!-- Huizhou Chinese -->
<languageMatch desired="czo" supported="zh" distance="10" oneway="true"/> <!-- Min Zhong Chinese -->
<languageMatch desired="gan" supported="zh" distance="10" oneway="true"/> <!-- Gan Chinese -->
<languageMatch desired="hak" supported="zh" distance="10" oneway="true"/> <!-- Hakka Chinese -->
<languageMatch desired="hsn" supported="zh" distance="10" oneway="true"/> <!-- Xiang Chinese -->
<languageMatch desired="lzh" supported="zh" distance="10" oneway="true"/> <!-- Literary Chinese -->
<languageMatch desired="mnp" supported="zh" distance="10" oneway="true"/> <!-- Min Bei Chinese -->
<languageMatch desired="nan" supported="zh" distance="10" oneway="true"/> <!-- Min Nan Chinese -->
<languageMatch desired="wuu" supported="zh" distance="10" oneway="true"/> <!-- Wu Chinese -->
<languageMatch desired="yue" supported="zh" distance="10" oneway="true"/> <!-- Chinese, Cantonese -->
<!-- END generated by GenerateLanguageMatches.java -->
<languageMatch desired="*" supported="*" distance="80"/> <!-- * ⇒ * -->
<languageMatch desired="am_Ethi" supported="en_Latn" distance="10" oneway="true"/>
<languageMatch desired="az_Latn" supported="ru_Cyrl" distance="10" oneway="true"/> <!-- az; Latn ⇒ ru; Cyrl -->
<languageMatch desired="bn_Beng" supported="en_Latn" distance="10" oneway="true"/> <!-- bn; Beng ⇒ en; Latn -->
<languageMatch desired="bo_Tibt" supported="zh_Hans" distance="10" oneway="true"/>
<languageMatch desired="hy_Armn" supported="ru_Cyrl" distance="10" oneway="true"/> <!-- hy; Armn ⇒ ru; Cyrl -->
<languageMatch desired="ka_Geor" supported="en_Latn" distance="10" oneway="true"/> <!-- ka; Geor ⇒ en; Latn -->
<languageMatch desired="km_Khmr" supported="en_Latn" distance="10" oneway="true"/> <!-- km; Khmr ⇒ en; Latn -->
<languageMatch desired="kn_Knda" supported="en_Latn" distance="10" oneway="true"/> <!-- kn; Knda ⇒ en; Latn -->
<languageMatch desired="lo_Laoo" supported="en_Latn" distance="10" oneway="true"/> <!-- lo; Laoo ⇒ en; Latn -->
<languageMatch desired="ml_Mlym" supported="en_Latn" distance="10" oneway="true"/> <!-- ml; Mlym ⇒ en; Latn -->
<languageMatch desired="my_Mymr" supported="en_Latn" distance="10" oneway="true"/> <!-- my; Mymr ⇒ en; Latn -->
<languageMatch desired="ne_Deva" supported="en_Latn" distance="10" oneway="true"/> <!-- ne; Deva ⇒ en; Latn -->
<languageMatch desired="or_Orya" supported="en_Latn" distance="10" oneway="true"/> <!-- or; Orya ⇒ en; Latn -->
<languageMatch desired="pa_Guru" supported="en_Latn" distance="10" oneway="true"/> <!-- pa; Guru ⇒ en; Latn -->
<languageMatch desired="ps_Arab" supported="en_Latn" distance="10" oneway="true"/> <!-- ps; Arab ⇒ en; Latn -->
<languageMatch desired="sd_Arab" supported="en_Latn" distance="10" oneway="true"/> <!-- sd; Arab ⇒ en; Latn -->
<languageMatch desired="si_Sinh" supported="en_Latn" distance="10" oneway="true"/> <!-- si; Sinh ⇒ en; Latn -->
<languageMatch desired="ta_Taml" supported="en_Latn" distance="10" oneway="true"/> <!-- ta; Taml ⇒ en; Latn -->
<languageMatch desired="te_Telu" supported="en_Latn" distance="10" oneway="true"/> <!-- te; Telu ⇒ en; Latn -->
<languageMatch desired="ti_Ethi" supported="en_Latn" distance="10" oneway="true"/> <!-- ti; Ethi ⇒ en; Latn -->
<languageMatch desired="tk_Latn" supported="ru_Cyrl" distance="10" oneway="true"/> <!-- tk; Latn ⇒ ru; Cyrl -->
<languageMatch desired="ur_Arab" supported="en_Latn" distance="10" oneway="true"/> <!-- ur; Arab ⇒ en; Latn -->
<languageMatch desired="uz_Latn" supported="ru_Cyrl" distance="10" oneway="true"/> <!-- uz; Latn ⇒ ru; Cyrl -->
<languageMatch desired="yi_Hebr" supported="en_Latn" distance="10" oneway="true"/> <!-- yi; Hebr ⇒ en; Latn -->
<languageMatch desired="sr_Latn" supported="sr_Cyrl" distance="5"/> <!-- sr; Latn ⇒ sr; Cyrl -->
<languageMatch desired="za_Latn" supported="zh_Hans" distance="10" oneway="true"/>
<!-- zh_Hani: Slightly bigger distance than zh_Hant->zh_Hans was before CLDR-14355 -->
<languageMatch desired="zh_Hani" supported="zh_Hans" distance="20" oneway="true"/>
<languageMatch desired="zh_Hani" supported="zh_Hant" distance="20" oneway="true"/>
<!-- Latin transliterations of some languages, initially from CLDR-13577 -->
<languageMatch desired="ar_Latn" supported="ar_Arab" distance="20" oneway="true"/>
<languageMatch desired="bn_Latn" supported="bn_Beng" distance="20" oneway="true"/>
<languageMatch desired="gu_Latn" supported="gu_Gujr" distance="20" oneway="true"/>
<languageMatch desired="hi_Latn" supported="hi_Deva" distance="20" oneway="true"/>
<languageMatch desired="kn_Latn" supported="kn_Knda" distance="20" oneway="true"/>
<languageMatch desired="ml_Latn" supported="ml_Mlym" distance="20" oneway="true"/>
<languageMatch desired="mr_Latn" supported="mr_Deva" distance="20" oneway="true"/>
<languageMatch desired="ta_Latn" supported="ta_Taml" distance="20" oneway="true"/>
<languageMatch desired="te_Latn" supported="te_Telu" distance="20" oneway="true"/>
<languageMatch desired="zh_Latn" supported="zh_Hans" distance="20" oneway="true"/> <!-- Pinyin -->
<!-- start fallbacks for group script codes, initially from CLDR-13526
Look for plus signs on https://www.unicode.org/iso15924/iso15924-codes.html -->
<languageMatch desired="ja_Latn" supported="ja_Jpan" distance="5" oneway="true"/>
<languageMatch desired="ja_Hani" supported="ja_Jpan" distance="5" oneway="true"/>
<languageMatch desired="ja_Hira" supported="ja_Jpan" distance="5" oneway="true"/>
<languageMatch desired="ja_Kana" supported="ja_Jpan" distance="5" oneway="true"/>
<languageMatch desired="ja_Hrkt" supported="ja_Jpan" distance="5" oneway="true"/>
<languageMatch desired="ja_Hira" supported="ja_Hrkt" distance="5" oneway="true"/>
<languageMatch desired="ja_Kana" supported="ja_Hrkt" distance="5" oneway="true"/>
<languageMatch desired="ko_Hani" supported="ko_Kore" distance="5" oneway="true"/>
<languageMatch desired="ko_Hang" supported="ko_Kore" distance="5" oneway="true"/>
<languageMatch desired="ko_Jamo" supported="ko_Kore" distance="5" oneway="true"/>
<languageMatch desired="ko_Jamo" supported="ko_Hang" distance="5" oneway="true"/>
<!-- No special mappings for zh Bopo/Hanb
because Bopomofo is used only in TW, and unsure how widely.
No special mappings for styled scripts like Latf or Aran
because those would apply to many languages;
if desired, those would be better handled as matcher-specific script aliases. -->
<!-- end fallbacks for group script codes -->
<!-- default script mismatch distance -->
<languageMatch desired="*_*" supported="*_*" distance="50"/> <!-- *; * ⇒ *; * -->
<languageMatch desired="ar_*_$maghreb" supported="ar_*_$maghreb" distance="4"/> <!-- ar; *; $maghreb ⇒ ar; *; $maghreb -->
<languageMatch desired="ar_*_$!maghreb" supported="ar_*_$!maghreb" distance="4"/> <!-- ar; *; $!maghreb ⇒ ar; *; $!maghreb -->
<languageMatch desired="ar_*_*" supported="ar_*_*" distance="5"/> <!-- ar; *; * ⇒ ar; *; * -->
<languageMatch desired="en_*_$enUS" supported="en_*_$enUS" distance="4"/> <!-- en; *; $enUS ⇒ en; *; $enUS -->
<languageMatch desired="en_*_$!enUS" supported="en_*_GB" distance="3"/> <!-- Make en_GB preferred... -->
<languageMatch desired="en_*_$!enUS" supported="en_*_$!enUS" distance="4"/> <!-- en; *; $!enUS ⇒ en; *; $!enUS -->
<languageMatch desired="en_*_*" supported="en_*_*" distance="5"/> <!-- en; *; * ⇒ en; *; * -->
<languageMatch desired="es_*_$americas" supported="es_*_$americas" distance="4"/> <!-- es; *; $americas ⇒ es; *; $americas -->
<languageMatch desired="es_*_$!americas" supported="es_*_$!americas" distance="4"/> <!-- es; *; $!americas ⇒ es; *; $!americas -->
<languageMatch desired="es_*_*" supported="es_*_*" distance="5"/> <!-- es; *; * ⇒ es; *; * -->
<languageMatch desired="pt_*_$americas" supported="pt_*_$americas" distance="4"/> <!-- pt; *; $americas ⇒ pt; *; $americas -->
<languageMatch desired="pt_*_$!americas" supported="pt_*_$!americas" distance="4"/> <!-- pt; *; $!americas ⇒ pt; *; $!americas -->
<languageMatch desired="pt_*_*" supported="pt_*_*" distance="5"/> <!-- pt; *; * ⇒ pt; *; * -->
<languageMatch desired="zh_Hant_$cnsar" supported="zh_Hant_$cnsar" distance="4"/> <!-- zh; Hant; $cnsar ⇒ zh; Hant; $cnsar -->
<languageMatch desired="zh_Hant_$!cnsar" supported="zh_Hant_$!cnsar" distance="4"/> <!-- zh; Hant; $!cnsar ⇒ zh; Hant; $!cnsar -->
<languageMatch desired="zh_Hant_*" supported="zh_Hant_*" distance="5"/> <!-- zh; Hant; * ⇒ zh; Hant; * -->
<languageMatch desired="*_*_*" supported="*_*_*" distance="4"/> <!-- *; *; * ⇒ *; *; * -->
</languageMatches>
</languageMatching>
</supplementalData>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,330 @@
# TerritoryCodes
# RFC3066; UN Numeric; ISO3166 Alpha-3, internet, FIPS-10
# whitespace delimited: - for empty
# See http://unstats.un.org/unsd/methods/m49/m49regin.htm
# and http://www.iso.org/iso/en/prods-services/iso3166ma/01whats-new/index.html
# See also http://www.cia.gov/cia/publications/factbook/appendix/appendix-d.html
# and http://data.iana.org/TLD/tlds-alpha-by-domain.txt for the latest domains
# and http://www.iana.org/cctld/cctld-whois.htm
# and https://www.icmwg.org/ccwg/documents/ISO3166-FIPS10-A2-Mapping/3166-1-A2--to-FIPS10-A2-mapping.htm
# for FIPS: http://earth-info.nga.mil/gns/html/fips_files.html
RS 688 SRB rs RB
ME 499 MNE me MJ
AD 020 AND ad AN
AE 784 ARE ae AE
AF 004 AFG af AF
AG 028 ATG ag AC
AI 660 AIA ai AV
AL 008 ALB al AL
AM 051 ARM am AM
AO 024 AGO ao AO
AQ 010 ATA aq AY
AR 032 ARG ar AR
AS 016 ASM as AQ
AT 040 AUT at AU
AU 036 AUS au AS
AW 533 ABW aw AA
AZ 031 AZE az AJ
BA 070 BIH ba BK
BB 052 BRB bb BB
BD 050 BGD bd BG
BE 056 BEL be BE
BF 854 BFA bf UV
BG 100 BGR bg BU
BH 048 BHR bh BA
BI 108 BDI bi BY
BJ 204 BEN bj BN
BL 652 BLM - TB
BM 060 BMU bm BD
BN 096 BRN bn BX
BO 068 BOL bo BL
BQ 535 BES - -
BR 076 BRA br BR
BS 044 BHS bs BF
BT 064 BTN bt BT
BV 074 BVT bv BV
BW 072 BWA bw BC
BY 112 BLR by BO
BZ 084 BLZ bz BH
CA 124 CAN ca CA
CC 166 CCK cc CK
CD 180 COD cd CG
CF 140 CAF cf CT
CG 178 COG cg CF
CH 756 CHE ch SZ
CI 384 CIV ci IV
CK 184 COK ck CW
CL 152 CHL cl CI
CM 120 CMR cm CM
CN 156 CHN cn CH
CO 170 COL co CO
CR 188 CRI cr CS
CU 192 CUB cu CU
CV 132 CPV cv CV
CW 531 CUW cw -
CX 162 CXR cx KT
CY 196 CYP cy CY
CZ 203 CZE cz EZ
DE 276 DEU de GM
DJ 262 DJI dj DJ
DK 208 DNK dk DA
DM 212 DMA dm DO
DO 214 DOM do DR
DZ 012 DZA dz AG
EC 218 ECU ec EC
EE 233 EST ee EN
EG 818 EGY eg EG
EH 732 ESH - WI
ER 232 ERI er ER
ES 724 ESP es SP
ET 231 ETH et ET
FI 246 FIN fi FI
FJ 242 FJI fj FJ
FK 238 FLK fk FK
FM 583 FSM fm FM
FO 234 FRO fo FO
FR 250 FRA fr FR
FX 249 FXX - -
GA 266 GAB ga GB
GB 826 GBR uk/gb UK
GD 308 GRD gd GJ
GE 268 GEO ge GG
GF 254 GUF gf FG
GG 831 GGY gg GK
GH 288 GHA gh GH
GI 292 GIB gi GI
GL 304 GRL gl GL
GM 270 GMB gm GA
GN 324 GIN gn GV
GP 312 GLP gp GP
GQ 226 GNQ gq EK
GR 300 GRC gr GR
GS 239 SGS gs SX
GT 320 GTM gt GT
GU 316 GUM gu GQ
GW 624 GNB gw PU
GY 328 GUY gy GY
HK 344 HKG hk HK
HM 334 HMD hm HM
HN 340 HND hn HO
HR 191 HRV hr HR
HT 332 HTI ht HA
HU 348 HUN hu HU
ID 360 IDN id ID
IE 372 IRL ie EI
IL 376 ISR il IS
IM 833 IMN im IM
IN 356 IND in IN
IO 086 IOT io IO
IQ 368 IRQ iq IZ
IR 364 IRN ir IR
IS 352 ISL is IC
IT 380 ITA it IT
JE 832 JEY je JE
JM 388 JAM jm JM
JO 400 JOR jo JO
JP 392 JPN jp JA
KE 404 KEN ke KE
KG 417 KGZ kg KG
KH 116 KHM kh CB
KI 296 KIR ki KR
KM 174 COM km CN
KN 659 KNA kn SC
KP 408 PRK kp KN
KR 410 KOR kr KS
KW 414 KWT kw KU
KY 136 CYM ky CJ
KZ 398 KAZ kz KZ
LA 418 LAO la LA
LB 422 LBN lb LE
LC 662 LCA lc ST
LI 438 LIE li LS
LK 144 LKA lk CE
LR 430 LBR lr LI
LS 426 LSO ls LT
LT 440 LTU lt LH
LU 442 LUX lu LU
LV 428 LVA lv LG
LY 434 LBY ly LY
MA 504 MAR ma MO
MC 492 MCO mc MN
MD 498 MDA md MD
MF 663 MAF - RN
MG 450 MDG mg MA
MH 584 MHL mh RM
MK 807 MKD mk MK
ML 466 MLI ml ML
MM 104 MMR mm BM
MN 496 MNG mn MG
MO 446 MAC mo MC
MP 580 MNP mp CQ
MQ 474 MTQ mq MB
MR 478 MRT mr MR
MS 500 MSR ms MH
MT 470 MLT mt MT
MU 480 MUS mu MP
MV 462 MDV mv MV
MW 454 MWI mw MI
MX 484 MEX mx MX
MY 458 MYS my MY
MZ 508 MOZ mz MZ
NA 516 NAM na WA
NC 540 NCL nc NC
NE 562 NER ne NG
NF 574 NFK nf NF
NG 566 NGA ng NI
NI 558 NIC ni NU
NL 528 NLD nl NL
NO 578 NOR no NO
NP 524 NPL np NP
NR 520 NRU nr NR
NU 570 NIU nu NE
NZ 554 NZL nz NZ
OM 512 OMN om MU
PA 591 PAN pa PM
PE 604 PER pe PE
PF 258 PYF pf FP
PG 598 PNG pg PP
PH 608 PHL ph RP
PK 586 PAK pk PK
PL 616 POL pl PL
PM 666 SPM pm SB
PN 612 PCN pn PC
PR 630 PRI pr RQ
PS 275 PSE ps GZ
PT 620 PRT pt PO
PW 585 PLW pw PS
PY 600 PRY py PA
QA 634 QAT qa QA
RE 638 REU re RE
RO 642 ROU ro RO
RU 643 RUS ru/su RS
RW 646 RWA rw RW
SA 682 SAU sa SA
SB 090 SLB sb BP
SC 690 SYC sc SE
SD 729 SDN sd SU
SE 752 SWE se SW
SG 702 SGP sg SN
SH 654 SHN sh SH
SI 705 SVN si SI
SJ 744 SJM sj SV
SK 703 SVK sk LO
SL 694 SLE sl SL
SM 674 SMR sm SM
SN 686 SEN sn SG
SO 706 SOM so SO
SR 740 SUR sr NS
SS 728 SSD - -
ST 678 STP st TP
SV 222 SLV sv ES
SX 534 SXM sx -
SY 760 SYR sy SY
SZ 748 SWZ sz WZ
TC 796 TCA tc TK
TD 148 TCD td CD
TF 260 ATF tf FS
TG 768 TGO tg TO
TH 764 THA th TH
TJ 762 TJK tj TI
TK 772 TKL tk TL
TL 626 TLS tl TT
TM 795 TKM tm TX
TN 788 TUN tn TS
TO 776 TON to TN
TR 792 TUR tr TU
TT 780 TTO tt TD
TV 798 TUV tv TV
TW 158 TWN tw TW
TZ 834 TZA tz TZ
UA 804 UKR ua UP
UG 800 UGA ug UG
UM 581 UMI - -
US 840 USA us US
UY 858 URY uy UY
UZ 860 UZB uz UZ
VA 336 VAT va VT
VC 670 VCT vc VC
VE 862 VEN ve VE
VG 092 VGB vg VI
VI 850 VIR vi VQ
VN 704 VNM vn VM
VU 548 VUT vu NH
WF 876 WLF wf WF
WS 882 WSM ws WS
YE 887 YEM ye YM
YT 175 MYT yt MF
ZA 710 ZAF za SF
ZM 894 ZMB zm ZA
ZW 716 ZWE zw ZI
# codes missing from above
AX 248 ALA ax
# private use codes
AA 958 AAA
QM 959 QMM
QN 960 QNN
QO 961 QOO
QP 962 QPP
QQ 963 QQQ
QR 964 QRR
QS 965 QSS
QT 966 QTT
QU 967 QUU
QV 968 QVV
QW 969 QWW
QX 970 QXX
QY 971 QYY
QZ 972 QZZ
XA 973 XAA
XB 974 XBB
XC 975 XCC
XD 976 XDD
XE 977 XEE
XF 978 XFF
XG 979 XGG
XH 980 XHH
XI 981 XII
XJ 982 XJJ
XK 983 XKK
XL 984 XLL
XM 985 XMM
XN 986 XNN
XO 987 XOO
XP 988 XPP
XQ 989 XQQ
XR 990 XRR
XS 991 XSS
XT 992 XTT
XU 993 XUU
XV 994 XVV
XW 995 XWW
XX 996 XXX
XY 997 XYY
XZ 998 XZZ
ZZ 999 ZZZ
# Deprecated codes
AN 530 ANT - NT
BU 104 BUR
CS 891 SCG - YI
DD 278 DDR
NT 536 NTZ
SU 810 SUN
TP 626 TMP
YD 720 YMD
YU 891 YUG
ZR 180 ZAR
# Codes in the LST but not in UN Numeric
AC - ASC AC - # Ascension Island
CP - CPT - - # Clipperton Island
DG - DGA - - # Diego Garcia
TA - TAA - - # Tristan da Cunha
EA - - - - # Ceuta and Melilla
EU 967 QUU EU - # European Union
EZ - - - - # Eurozone
IC - - - - # Canary Islands
UN - UNO - - # United Nations
#end

View File

@@ -0,0 +1,71 @@
-- Generate a script map based on ISO 15924 data
--
-- Data source: Unicode
-- URL: https://www.unicode.org/iso15924/iso15924.txt
-- License: UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
codeFileName = "unicode/iso15924.txt"
function split(str, character)
result = {}
index = 1
for s in string.gmatch(str .. character, "(.-)"..character) do
result[index] = s
index = index + 1
end
return result
end
fo2 = io.open('temp/uni_loadscriptmap.sql','w')
fo2:write('-- Mapping of script codes based on ISO 15924\n-- Date: ' .. os.date("%Y-%m-%d %H:%M") .. '\n\n')
fo2:write('-- Data source: Unicode Org (https://www.unicode.org)\n')
fo2:write('-- URL: https://www.unicode.org/iso15924/iso15924.txt\n')
fo2:write('-- License: UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE\n\n')
fo2:write("create table if not exists uni_scriptmap (sctag char, scname char, scalias char, primary key (sctag));\n")
fo2:write('delete from uni_scriptmap;\nbegin;\n')
-- Names and order of data columns
-- Code|N°|English Name|Nom français|Alias|Age|Date
noalias = 0
count = 0
for line in io.lines(codeFileName) do
rem = string.sub(line,1,1)
if rem ~= "#" and rem ~= "" then
values = split(line, ";")
sctag = values[1]
scnum = values[2]
scname = values[3]
scname_fr = values[4]
scalias = values[5]
scage = values[6]
scdate = values[7]
scname = scname:gsub("'", "''")
if scalias == "" then
if sctag == "Hans" or sctag == "Hant" then
scalias = sctag
else
noalias = noalias + 1
scalias = "-"
end
end
fo2:write("insert into uni_scriptmap values ('" .. sctag .. "', '" .. scname .. "', '" .. scalias .. "');\n")
count = count + 1
end
end
print(" Number of script mappings = " .. count)
print(" Number of missing script aliases = " .. noalias)
if noalias > 0 then
print(" Script aliases are used in POSIX locale identifiers where they are")
print(" used as modifiers to represent the script of a language.")
print(" Missing script aliases impose a problem only for script identifiers")
print(" actually used in locale tags supported by wxWidgets.")
end
fo2:write('commit;\n')
fo2:close()

View File

@@ -0,0 +1,31 @@
-- Extract data from CLDR data file likelySubtags.xml
-- Relevant tags: <likelySubtag from="xx" to="xx_Xxxx_XX"/>
-- Assign script arguments and check validity
xmlFileName = "unicode/likelySubtags.xml"
sqlFileName = "temp/uni_loadlikely.sql"
-- Open files
xmlInput = assert(io.open(xmlFileName, "r"))
xmlData = xmlInput:read("*all")
sqlFile = assert(io.open(sqlFileName, "w"))
-- Write SQL file header
sqlFile:write("create table if not exists uni_likelysubtags (tagfrom char, tagto char, primary key (tagfrom));\n")
sqlFile:write("delete from uni_likelysubtags;\n")
sqlFile:write("begin;\n")
-- Extract data from XML
-- Replace underscore by hyphen
for w in string.gmatch(xmlData, "<likelySubtags>(.-)</likelySubtags>") do
for tagFrom,tagTo in string.gmatch(w, ".-<likelySubtag from=\"(.-)\" to=\"(.-)\"") do
sqlFile:write("insert into uni_likelysubtags values ('" .. tagFrom:gsub('_','-') .. "', '" .. tagTo:gsub('_','-') .. "');\n")
end
end
-- Write SQL file trailer
sqlFile:write("commit;\n")
-- Close files
xmlInput:close()
sqlFile:close()

View File

@@ -0,0 +1,38 @@
-- Extract data from CLDR data file languageInfo.xml
-- Relevant tags: <languageMatch desired="xx" supported="yy" distance="30" oneway="true"/>
-- Assign script arguments and check validity
xmlFileName = "unicode/languageInfo.xml"
assert(xmlFileName ~= nil, "Name of XML file missing!")
sqlFileName = "temp/uni_loadmatching.sql"
assert(sqlFileName ~= nil, "Name of SQL file missing!")
-- Open files
xmlInput = assert(io.open(xmlFileName, "r"))
xmlData = xmlInput:read("*all")
sqlFile = assert(io.open(sqlFileName, "w"))
-- Write SQL file header
sqlFile:write("create table if not exists uni_languagematch (desired char, supported char, distance int, oneway char, primary key (desired, supported));\n")
sqlFile:write("delete from uni_languagematch;\n")
sqlFile:write("begin;\n")
-- Extract data from XML
-- Replace underscore by hyphen
for w in string.gmatch(xmlData, ".-<languageMatches.->(.-)</languageMatches>") do
for desired,supported,distance,oneopt in string.gmatch(w, ".-<languageMatch desired=\"(.-)\".-supported=\"(.-)\".-distance=\"(.-)\"(.-)/>") do
oneway = oneopt:match("oneway=\"(.-)\"")
-- Check optional parameter oneway
if oneway == nil then
oneway = "false"
end
sqlFile:write("insert into uni_languagematch values ('" .. desired:gsub('_','-') .. "', '" .. supported:gsub('_','-') .. "', " .. distance .. ", '" .. oneway .. "');\n")
end
end
-- Write SQL file trailer
sqlFile:write("commit;\n")
-- Close files
xmlInput:close()
sqlFile:close()

View File

@@ -0,0 +1,135 @@
-- Extract data from CLDR data file supplementalData.xml and languageInfo.xml
-- Relevant tags in supplementalData:
-- <territoryContainment>
-- <group type="nnn" contains="aaa bbb cccc ..."/>
-- Relevant tags in languageInfo:
-- <matchVariable id="$yyy" value="zzz"/>
-- <languageMatch desired="xx_*_$yyy" [...] />
-- Assign script arguments and check validity
xmlFileName1 = "unicode/supplementalData.xml"
xmlFileName2 = "unicode/languageInfo.xml"
sqlFileName = "temp/uni_loadregiongroups.sql"
-- Open files
xmlInput1 = assert(io.open(xmlFileName1, "r"))
xmlData1 = xmlInput1:read("*all")
xmlInput2 = assert(io.open(xmlFileName2, "r"))
xmlData2 = xmlInput2:read("*all")
sqlFile = assert(io.open(sqlFileName, "w"))
-- Extract data from XML
-- Replace underscore by hyphen
local regions = {}
-- Extract territory containments
print(" -> Extract territory containments")
for w in string.gmatch(xmlData1, "<territoryContainment>(.-)</territoryContainment>") do
for grtype,grcontains,grother in string.gmatch(w, "<group type=\"(.-)\" contains=\"(.-)\"(.-)/>") do
-- Extract value of status attribute
status = grother:match("status=\"(.-)\"")
if status == nil then
status = ""
end
-- Extract value of grouping attribute
grouping = grother:match("grouping=\"(.-)\"")
if grouping == nil then
grouping = "false"
end
-- Use only entries with status NOT equal to "deprecated" or "grouping"
if status ~= "deprecated" and status ~= "grouping" then
regions[grtype] = grcontains
end
end
end
-- Function for building the country list of a region
function addcountries(regions, countries, countrylist)
local nn = #countries
for id in countrylist:gmatch("%w+") do
region = regions[id]
if region ~= nil then
addcountries(regions, countries, regions[id])
else
nn = #countries + 1
countries[nn] = id
end
end
end
-- Extract matching region
print(" -> Extract languages and matching regions")
local languages = {}
local matchids = {}
for w in string.gmatch(xmlData2, ".-<languageMatches.->(.-)</languageMatches>") do
for matchVarId,matchVarValue in string.gmatch(w, "<matchVariable id=\"(.-)\".-value=\"(.-)\"") do
matchVarValue = matchVarValue:gsub('+',' ')
matchVarValue = matchVarValue:gsub('-',' ')
-- print("Id=" .. matchVarId .. ", " .. matchVarValue)
matchids[matchVarId] = matchVarValue
regions[matchVarId] = matchVarValue
for langMatch in string.gmatch(w, ".-<languageMatch desired=\"(.-)\".-/>") do
found = string.find(langMatch, matchVarId)
if found ~= nil then
uscorestar = string.find(langMatch, "%_%*")
if uscorestar ~= nil then
language = string.sub(langMatch,1,uscorestar-1)
else
language = string.sub(langMatch,1,found-2)
end
language = language:gsub('_','-')
languages[language] = matchVarId
print(" Language: " .. language, "Region: " .. string.sub(matchVarId,2))
end
end
end
end
-- Extract territory containments
local regionlist = {}
print(' -> Extract (and expand) regions')
for k,v in pairs(regions) do
regionlist[k] = {}
addcountries(regions, regionlist[k], v)
print(" Region:", k, " Size:", #regionlist[k])
-- Print for debugging if necessary
-- for _, cid in ipairs(regionlist[k]) do
-- io.write(cid .. " ")
-- end
-- io.write("\n")
end
print(" -> Generate SQL file")
-- Write SQL file header
sqlFile:write("create table if not exists uni_regiongroups (language char, country char, primary key(language, country));\n")
sqlFile:write("delete from uni_regiongroups;\n")
sqlFile:write("begin;\n")
-- Sort language keys
local tkeys = {}
for k in pairs(languages) do
table.insert(tkeys, k)
end
table.sort(tkeys)
-- Write data to SQL file
for _, k in ipairs(tkeys) do
v = languages[k]
sqlFile:write("\n-- Region group '" .. string.sub(v,2) .. "' for language '" .. k .. "'\n")
for _, cid in ipairs(regionlist[v]) do
sqlFile:write("insert into uni_regiongroups values ('" .. k .. "', '" .. cid .. "');\n")
end
end
-- Write SQL file trailer
sqlFile:write("commit;\n")
-- Close files
xmlInput1:close()
xmlInput2:close()
sqlFile:close()

View File

@@ -0,0 +1,61 @@
-- Generate a script map based on ISO 15924 data
--
-- Data source: Unicode CLDR
-- URL: https://github.com/unicode-org/cldr/raw/main/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/territory_codes.txt
-- License: UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
codeFileName = "unicode/territory_codes.txt"
function split(str)
result = {}
index = 1
for s in string.gmatch(str, "%S+") do
result[index] = s
index = index + 1
end
return result
end
fo1 = io.open('temp/uni_loadterritorycodes.sql','w')
fo1:write('-- List of territory codes based on ISO 3166\n-- Date: ' .. os.date("%Y-%m-%d %H:%M") .. '\n\n')
fo1:write('-- Data source: Unicode CLDR (https://cldr.unicode.org)\n')
fo1:write('-- File: https://github.com/unicode-org/cldr/raw/main/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/territory_codes.txt\n')
fo1:write('-- License: UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE\n\n')
fo1:write("create table if not exists uni_territorycodes (iso2 char, iso3 char, primary key (iso2));\n")
fo1:write('delete from uni_territorycodes;\nbegin;\n')
count = 0
ccprev = ""
for line in io.lines(codeFileName) do
rem = string.sub(line,1,1)
if rem ~= "#" then
values = split(line)
-- 1 RFC3066
-- 2 UN Numeric
-- 3 ISO3166 Alpha-3
-- 4 internet
-- 5 FIPS-10
iso2 = values[1]
iso3 = values[3]
if iso3 ~= nil then
fo1:write("insert into uni_territorycodes values ('" .. iso2 .. "', '" .. iso3 .. "');\n")
else
print('*** Warning: no iso3 code for ' .. iso2)
end
count = count + 1
else
if line == "# Deprecated codes" then
break
end
end
end
print(" Number of countries = " .. count)
fo1:write('commit;\n')
fo1:close()

View File

@@ -0,0 +1,46 @@
UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
See Terms of Use <https://www.unicode.org/copyright.html>
for definitions of Unicode Inc.s Data Files and Software.
NOTICE TO USER: Carefully read the following legal agreement.
BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
TERMS AND CONDITIONS OF THIS AGREEMENT.
IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
THE DATA FILES OR SOFTWARE.
COPYRIGHT AND PERMISSION NOTICE
Copyright © 1991-2023 Unicode, Inc. All rights reserved.
Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Unicode data files and any associated documentation
(the "Data Files") or Unicode software and any associated documentation
(the "Software") to deal in the Data Files or Software
without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, and/or sell copies of
the Data Files or Software, and to permit persons to whom the Data Files
or Software are furnished to do so, provided that either
(a) this copyright and permission notice appear with all copies
of the Data Files or Software, or
(b) this copyright and permission notice appear in associated
Documentation.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT OF THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THE DATA FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder
shall not be used in advertising or otherwise to promote the sale,
use or other dealings in these Data Files or Software without prior
written authorization of the copyright holder.

View File

@@ -0,0 +1,885 @@
aa|Afar|Afar|Ethiopia|Latn;|ETH|ETB|0|1000|Qafar|Qafar|Otobbia
aa-DJ|Afar (Djibouti)|Afar|Djibouti|Latn;|DJI|DJF|0|1000|Qafar (Yabuuti)|Qafar|Yabuuti
aa-ER|Afar (Eritrea)|Afar|Eritrea|Latn;|ERI|ERN|0|1000|Qafar (Eretria)|Qafar|Eretria
aa-ET|Afar (Ethiopia)|Afar|Ethiopia|Latn;|ETH|ETB|0|1000|Qafar (Otobbia)|Qafar|Otobbia
af|Afrikaans|Afrikaans|South Africa|Latn;|ZAF|ZAR|0|0436|Afrikaans|Afrikaans|Suid-Afrika
af-NA|Afrikaans (Namibia)|Afrikaans|Namibia|Latn;|NAM|NAD|0|1000|Afrikaans (Namibië)|Afrikaans|Namibië
af-ZA|Afrikaans (South Africa)|Afrikaans|South Africa|Latn;|ZAF|ZAR|0|0436|Afrikaans (Suid-Afrika)|Afrikaans|Suid-Afrika
agq|Aghem|Aghem|Cameroon|Latn;|CMR|XAF|0|1000|Aghem|Aghem|Kàmàlûŋ
agq-CM|Aghem (Cameroon)|Aghem|Cameroon|Latn;|CMR|XAF|0|1000|Aghem (Kàmàlûŋ)|Aghem|Kàmàlûŋ
ak|Akan|Akan|Ghana|Latn;|GHA|GHS|0|1000|Akan|Akan|Gaana
ak-GH|Akan (Ghana)|Akan|Ghana|Latn;|GHA|GHS|0|1000|Akan (Gaana)|Akan|Gaana
am|Amharic|Amharic|Ethiopia|Ethi;|ETH|ETB|0|045e|አማርኛ|አማርኛ|ኢትዮጵያ
am-ET|Amharic (Ethiopia)|Amharic|Ethiopia|Ethi;|ETH|ETB|0|045e|አማርኛ (ኢትዮጵያ)|አማርኛ|ኢትዮጵያ
ar|Arabic|Arabic|Saudi Arabia|Arab;|SAU|SAR|1|0401|العربية|العربية|المملكة العربية السعودية
ar-001|Arabic (World)|Arabic|World|Arab;|001|XDR|1|1000|العربية (العالم)|العربية|العالم
ar-AE|Arabic (United Arab Emirates)|Arabic|United Arab Emirates|Arab;|ARE|AED|1|3801|العربية (الإمارات العربية المتحدة)|العربية|الإمارات العربية المتحدة
ar-BH|Arabic (Bahrain)|Arabic|Bahrain|Arab;|BHR|BHD|1|3c01|العربية (البحرين)|العربية|البحرين
ar-DJ|Arabic (Djibouti)|Arabic|Djibouti|Arab;|DJI|DJF|1|1000|العربية (جيبوتي)|العربية|جيبوتي
ar-DZ|Arabic (Algeria)|Arabic|Algeria|Arab;|DZA|DZD|1|1401|العربية (الجزائر)|العربية|الجزائر
ar-EG|Arabic (Egypt)|Arabic|Egypt|Arab;|EGY|EGP|1|0c01|العربية (مصر)|العربية|مصر
ar-ER|Arabic (Eritrea)|Arabic|Eritrea|Arab;|ERI|ERN|1|1000|العربية (إريتريا)|العربية|إريتريا
ar-IL|Arabic (Israel)|Arabic|Israel|Arab;|ISR|ILS|1|1000|العربية (إسرائيل)|العربية|إسرائيل
ar-IQ|Arabic (Iraq)|Arabic|Iraq|Arab;|IRQ|IQD|1|0801|العربية (العراق)|العربية|العراق
ar-JO|Arabic (Jordan)|Arabic|Jordan|Arab;|JOR|JOD|1|2c01|العربية (الأردن)|العربية|الأردن
ar-KM|Arabic (Comoros)|Arabic|Comoros|Arab;|COM|KMF|1|1000|العربية (جزر القمر)|العربية|جزر القمر
ar-KW|Arabic (Kuwait)|Arabic|Kuwait|Arab;|KWT|KWD|1|3401|العربية (الكويت)|العربية|الكويت
ar-LB|Arabic (Lebanon)|Arabic|Lebanon|Arab;|LBN|LBP|1|3001|العربية (لبنان)|العربية|لبنان
ar-LY|Arabic (Libya)|Arabic|Libya|Arab;|LBY|LYD|1|1001|العربية (ليبيا)|العربية|ليبيا
ar-MA|Arabic (Morocco)|Arabic|Morocco|Arab;|MAR|MAD|1|1801|العربية (المملكة المغربية)|العربية|المملكة المغربية
ar-MR|Arabic (Mauritania)|Arabic|Mauritania|Arab;|MRT|MRU|1|1000|العربية (موريتانيا)|العربية|موريتانيا
ar-OM|Arabic (Oman)|Arabic|Oman|Arab;|OMN|OMR|1|2001|العربية (عمان)|العربية|عمان
ar-PS|Arabic (Palestinian Authority)|Arabic|Palestinian Authority|Arab;|PSE|ILS|1|1000|العربية (السلطة الفلسطينية)|العربية|السلطة الفلسطينية
ar-QA|Arabic (Qatar)|Arabic|Qatar|Arab;|QAT|QAR|1|4001|العربية (قطر)|العربية|قطر
ar-SA|Arabic (Saudi Arabia)|Arabic|Saudi Arabia|Arab;|SAU|SAR|1|0401|العربية (المملكة العربية السعودية)|العربية|المملكة العربية السعودية
ar-SD|Arabic (Sudan)|Arabic|Sudan|Arab;|SDN|SDG|1|1000|العربية (السودان)|العربية|السودان
ar-SO|Arabic (Somalia)|Arabic|Somalia|Arab;|SOM|SOS|1|1000|العربية (الصومال)|العربية|الصومال
ar-SS|Arabic (South Sudan)|Arabic|South Sudan|Arab;|SSD|SSP|1|1000|العربية (جنوب السودان)|العربية|جنوب السودان
ar-SY|Arabic (Syria)|Arabic|Syria|Arab;|SYR|SYP|1|2801|العربية (سوريا)|العربية|سوريا
ar-TD|Arabic (Chad)|Arabic|Chad|Arab;|TCD|XAF|1|1000|العربية (تشاد)|العربية|تشاد
ar-TN|Arabic (Tunisia)|Arabic|Tunisia|Arab;|TUN|TND|1|1c01|العربية (تونس)|العربية|تونس
ar-YE|Arabic (Yemen)|Arabic|Yemen|Arab;|YEM|YER|1|2401|العربية (اليمن)|العربية|اليمن
arn|Mapuche|Mapuche|Chile|Latn;|CHL|CLP|0|047a|Mapudungun|Mapudungun|Chile
arn-CL|Mapuche (Chile)|Mapuche|Chile|Latn;|CHL|CLP|0|047a|Mapudungun (Chile)|Mapudungun|Chile
as|Assamese|Assamese|India|Beng;|IND|INR|0|044d|অসমীয়া|অসমীয়া|ভাৰত
as-IN|Assamese (India)|Assamese|India|Beng;|IND|INR|0|044d|অসমীয়া (ভাৰত)|অসমীয়া|ভাৰত
asa|Asu|Asu|Tanzania|Latn;|TZA|TZS|0|1000|Kipare|Kipare|Tadhania
asa-TZ|Asu (Tanzania)|Asu|Tanzania|Latn;|TZA|TZS|0|1000|Kipare (Tadhania)|Kipare|Tadhania
ast|Asturian|Asturian|Spain|Latn;|ESP|EUR|0|1000|asturianu|asturianu|España
ast-ES|Asturian (Spain)|Asturian|Spain|Latn;|ESP|EUR|0|1000|asturianu (España)|asturianu|España
az|Azerbaijani|Azerbaijani|Azerbaijan|Latn;|AZE|AZN|0|042c|azərbaycan|azərbaycan|Azərbaycan
az-Cyrl|Azerbaijani (Cyrillic)|Azerbaijani (Cyrillic)|Azerbaijan|Cyrl;|AZE|AZN|0|082c|Азәрбајҹан дили (Кирил)|азәрбајҹан|Азәрбајҹан
az-Cyrl-AZ|Azerbaijani (Cyrillic, Azerbaijan)|Azerbaijani (Cyrillic)|Azerbaijan|Cyrl;|AZE|AZN|0|082c|азәрбајҹан (Азәрбајҹан)|азәрбајҹан|Азәрбајҹан
az-Latn|Azerbaijani (Latin)|Azerbaijani (Latin)|Azerbaijan|Latn;|AZE|AZN|0|042c|Azərbaycan­ılı (Latın)|azərbaycan|Azərbaycan
az-Latn-AZ|Azerbaijani (Latin, Azerbaijan)|Azerbaijani (Latin)|Azerbaijan|Latn;|AZE|AZN|0|042c|azərbaycan (Azərbaycan)|azərbaycan|Azərbaycan
ba|Bashkir|Bashkir|Russia|Cyrl;|RUS|RUB|0|046d|Башҡорт|Башҡорт|Рәсәй
ba-RU|Bashkir (Russia)|Bashkir|Russia|Cyrl;|RUS|RUB|0|046d|Башҡорт (Рәсәй)|Башҡорт|Рәсәй
bas|Basaa|Basaa|Cameroon|Latn;|CMR|XAF|0|1000|Ɓàsàa|Ɓàsàa|Kàmɛ̀rûn
bas-CM|Basaa (Cameroon)|Basaa|Cameroon|Latn;|CMR|XAF|0|1000|Ɓàsàa (Kàmɛ̀rûn)|Ɓàsàa|Kàmɛ̀rûn
be|Belarusian|Belarusian|Belarus|Cyrl;|BLR|BYN|0|0423|беларуская|беларуская|Беларусь
be-BY|Belarusian (Belarus)|Belarusian|Belarus|Cyrl;|BLR|BYN|0|0423|беларуская (Беларусь)|беларуская|Беларусь
bem|Bemba|Bemba|Zambia|Latn;|ZMB|ZMW|0|1000|Ichibemba|Ichibemba|Zambia
bem-ZM|Bemba (Zambia)|Bemba|Zambia|Latn;|ZMB|ZMW|0|1000|Ichibemba (Zambia)|Ichibemba|Zambia
bez|Bena|Bena|Tanzania|Latn;|TZA|TZS|0|1000|Hibena|Hibena|Hutanzania
bez-TZ|Bena (Tanzania)|Bena|Tanzania|Latn;|TZA|TZS|0|1000|Hibena (Hutanzania)|Hibena|Hutanzania
bg|Bulgarian|Bulgarian|Bulgaria|Cyrl;|BGR|BGN|0|0402|български|български|България
bg-BG|Bulgarian (Bulgaria)|Bulgarian|Bulgaria|Cyrl;|BGR|BGN|0|0402|български (България)|български|България
bin|Edo|Edo|Nigeria|Latn;|NGA|NGN|0|0466|Ẹ̀dó|Ẹ̀dó|Nigeria
bin-NG|Edo (Nigeria)|Edo|Nigeria|Latn;|NGA|NGN|0|0466|Ẹ̀dó (Nigeria)|Ẹ̀dó|Nigeria
bm|Bamanankan|Bamanankan|Mali|Latn;|MLI|XOF|0|1000|bamanakan|bamanakan|Mali
bm-Latn|Bamanankan (Latin)|Bamanankan (Latin)|Mali|Latn;|MLI|XOF|0|1000|bamanakan (Latin)|bamanakan|Mali
bm-Latn-ML|Bamanankan (Latin, Mali)|Bamanankan (Latin)|Mali|Latn;|MLI|XOF|0|1000|bamanakan (Mali)|bamanakan|Mali
bn|Bangla|Bangla|Bangladesh|Beng;|BGD|BDT|0|0845|বাংলা|বাংলা|বাংলাদেশ
bn-BD|Bangla (Bangladesh)|Bangla|Bangladesh|Beng;|BGD|BDT|0|0845|বাংলা (বাংলাদেশ)|বাংলা|বাংলাদেশ
bn-IN|Bengali (India)|Bengali|India|Beng;|IND|INR|0|0445|বাংলা (ভারত)|বাংলা|ভারত
bo|Tibetan|Tibetan|China|Tibt;|CHN|CNY|0|0451|བོད་སྐད་|བོད་སྐད་|ཀྲུང་ཧྭ་མི་དམངས་སྤྱི་མཐུན་རྒྱལ་ཁབ།
bo-CN|Tibetan (China)|Tibetan|China|Tibt;|CHN|CNY|0|0451|བོད་སྐད་ (རྒྱ་ནག)|བོད་སྐད་|ཀྲུང་ཧྭ་མི་དམངས་སྤྱི་མཐུན་རྒྱལ་ཁབ།
bo-IN|Tibetan (India)|Tibetan|India|Tibt;|IND|INR|0|1000|བོད་སྐད་ (རྒྱ་གར་)|བོད་སྐད་|རྒྱ་གར་
br|Breton|Breton|France|Latn;|FRA|EUR|0|047e|brezhoneg|brezhoneg|Frañs
br-FR|Breton (France)|Breton|France|Latn;|FRA|EUR|0|047e|brezhoneg (Frañs)|brezhoneg|Frañs
brx|Bodo|Bodo|India|Deva;|IND|INR|0|1000|बड़ो|बड़ो|भारत
brx-IN|Bodo (India)|Bodo|India|Deva;|IND|INR|0|1000|बड़ो (भारत)|बड़ो|भारत
bs|Bosnian|Bosnian|Bosnia & Herzegovina|Latn;|BIH|BAM|0|141a|bosanski|bosanski|Bosna i Hercegovina
bs-Cyrl|Bosnian (Cyrillic)|Bosnian (Cyrillic)|Bosnia and Herzegovina|Cyrl;|BIH|BAM|0|201a|босански (Ћирилица)|босански|Босна и Херцеговина
bs-Cyrl-BA|Bosnian (Cyrillic, Bosnia and Herzegovina)|Bosnian (Cyrillic)|Bosnia and Herzegovina|Cyrl;|BIH|BAM|0|201a|босански (Босна и Херцеговина)|босански|Босна и Херцеговина
bs-Latn|Bosnian (Latin)|Bosnian (Latin)|Bosnia & Herzegovina|Latn;|BIH|BAM|0|141a|bosanski (Latinica)|bosanski|Bosna i Hercegovina
bs-Latn-BA|Bosnian (Latin, Bosnia & Herzegovina)|Bosnian (Latin)|Bosnia & Herzegovina|Latn;|BIH|BAM|0|141a|bosanski (Bosna i Hercegovina)|bosanski|Bosna i Hercegovina
byn|Blin|Blin|Eritrea|Ethi;|ERI|ERN|0|1000|ብሊን|ብሊን|ኤርትራ
byn-ER|Blin (Eritrea)|Blin|Eritrea|Ethi;|ERI|ERN|0|1000|ብሊን (ኤርትራ)|ብሊን|ኤርትራ
ca|Catalan|Catalan|Spain|Latn;|ESP|EUR|0|0403|català|català|Espanya
ca-AD|Catalan (Andorra)|Catalan|Andorra|Latn;|AND|EUR|0|1000|català (Andorra)|català|Andorra
ca-ES|Catalan (Catalan)|Catalan|Spain|Latn;|ESP|EUR|0|0403|català (català)|català|Espanya
ca-ES-valencia|Valencian (Spain)|Valencian|Spain|Latn;|ESP|EUR|0|0803|valencià (Espanya)|valencià|Espanya
ca-FR|Catalan (France)|Catalan|France|Latn;|FRA|EUR|0|1000|català (França)|català|França
ca-IT|Catalan (Italy)|Catalan|Italy|Latn;|ITA|EUR|0|1000|català (Itàlia)|català|Itàlia
ccp|Chakma|Chakma|Bangladesh|Cakm;|BGD|BDT|0|1000|𑄌𑄋𑄴𑄟𑄳𑄦|𑄌𑄋𑄴𑄟𑄳𑄦|𑄝𑄁𑄣𑄘𑄬𑄌𑄴
ccp-Cakm|Chakma (Chakma)|Chakma (Chakma)|Bangladesh|Cakm;|BGD|BDT|0|1000|𑄌𑄋𑄴𑄟𑄳𑄦 (𑄌𑄇𑄴𑄟)|𑄌𑄋𑄴𑄟𑄳𑄦|𑄝𑄁𑄣𑄘𑄬𑄌𑄴
ccp-Cakm-BD|Chakma (Chakma, Bangladesh)|Chakma (Chakma)|Bangladesh|Cakm;|BGD|BDT|0|1000|𑄌𑄋𑄴𑄟𑄳𑄦 (𑄝𑄁𑄣𑄘𑄬𑄌𑄴)|𑄌𑄋𑄴𑄟𑄳𑄦|𑄝𑄁𑄣𑄘𑄬𑄌𑄴
ccp-Cakm-IN|Chakma (Chakma, India)|Chakma (Chakma)|India|Cakm;|IND|INR|0|1000|𑄌𑄋𑄴𑄟𑄳𑄦 (𑄞𑄢𑄧𑄖𑄴)|𑄌𑄋𑄴𑄟𑄳𑄦|𑄞𑄢𑄧𑄖𑄴
ce|Chechen|Chechen|Russia|Cyrl;|RUS|RUB|0|1000|нохчийн|нохчийн|Росси
ce-RU|Chechen (Russia)|Chechen|Russia|Cyrl;|RUS|RUB|0|1000|нохчийн (Росси)|нохчийн|Росси
ceb|Cebuano|Cebuano|Philippines|Latn;|PHL|PHP|0|1000|Binisaya|Binisaya|Pilipinas
ceb-Latn|Cebuano (Latin)|Cebuano (Latin)|Philippines|Latn;|PHL|PHP|0|1000|Binisaya (Latin)|Binisaya|Pilipinas
ceb-Latn-PH|Cebuano (Latin, Philippines)|Cebuano (Latin)|Philippines|Latn;|PHL|PHP|0|1000|Binisaya (Pilipinas)|Binisaya|Pilipinas
cgg|Chiga|Chiga|Uganda|Latn;|UGA|UGX|0|1000|Rukiga|Rukiga|Uganda
cgg-UG|Chiga (Uganda)|Chiga|Uganda|Latn;|UGA|UGX|0|1000|Rukiga (Uganda)|Rukiga|Uganda
chr|Cherokee|Cherokee|United States|Cher;|USA|USD|0|045c|ᏣᎳᎩ|ᏣᎳᎩ|ᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᏍᎦᏚᎩ
chr-Cher|Cherokee|Cherokee|United States|Cher;|USA|USD|0|045c|ᏣᎳᎩ|ᏣᎳᎩ|ᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᏍᎦᏚᎩ
chr-Cher-US|Cherokee (Cherokee, United States)|Cherokee|United States|Cher;|USA|USD|0|045c|ᏣᎳᎩ (ᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᏍᎦᏚᎩ)|ᏣᎳᎩ|ᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᏍᎦᏚᎩ
co|Corsican|Corsican|France|Latn;|FRA|EUR|0|0483|corsu|corsu|Francia
co-FR|Corsican (France)|Corsican|France|Latn;|FRA|EUR|0|0483|Corsu (Francia)|Corsu|Francia
cs|Czech|Czech|Czechia|Latn;|CZE|CZK|0|0405|čeština|čeština|Česko
cs-CZ|Czech (Czechia)|Czech|Czechia|Latn;|CZE|CZK|0|0405|čeština (Česko)|čeština|Česko
cu|Church Slavic|Church Slavic|Russia|Cyrl;|RUS|RUB|0|1000|церковнослове́нскїй|церковнослове́нскїй|рѡссі́а
cu-RU|Church Slavic (Russia)|Church Slavic|Russia|Cyrl;|RUS|RUB|0|1000|церковнослове́нскїй (рѡссі́а)|церковнослове́нскїй|рѡссі́а
cy|Welsh|Welsh|United Kingdom|Latn;|GBR|GBP|0|0452|Cymraeg|Cymraeg|Y Deyrnas Unedig
cy-GB|Welsh (United Kingdom)|Welsh|United Kingdom|Latn;|GBR|GBP|0|0452|Cymraeg (Y Deyrnas Unedig)|Cymraeg|Y Deyrnas Unedig
da|Danish|Danish|Denmark|Latn;|DNK|DKK|0|0406|dansk|dansk|Danmark
da-DK|Danish (Denmark)|Danish|Denmark|Latn;|DNK|DKK|0|0406|dansk (Danmark)|dansk|Danmark
da-GL|Danish (Greenland)|Danish|Greenland|Latn;|GRL|DKK|0|1000|dansk (Grønland)|dansk|Grønland
dav|Taita|Taita|Kenya|Latn;|KEN|KES|0|1000|Kitaita|Kitaita|Kenya
dav-KE|Taita (Kenya)|Taita|Kenya|Latn;|KEN|KES|0|1000|Kitaita (Kenya)|Kitaita|Kenya
de|German|German|Germany|Latn;|DEU|EUR|0|0407|Deutsch|Deutsch|Deutschland
de-AT|German (Austria)|German|Austria|Latn;|AUT|EUR|0|0c07|Deutsch (Österreich)|Deutsch|Österreich
de-BE|German (Belgium)|German|Belgium|Latn;|BEL|EUR|0|1000|Deutsch (Belgien)|Deutsch|Belgien
de-CH|German (Switzerland)|German|Switzerland|Latn;|CHE|CHF|0|0807|Deutsch (Schweiz)|Deutsch|Schweiz
de-DE|German (Germany)|German|Germany|Latn;|DEU|EUR|0|0407|Deutsch (Deutschland)|Deutsch|Deutschland
de-IT|German (Italy)|German|Italy|Latn;|ITA|EUR|0|1000|Deutsch (Italien)|Deutsch|Italien
de-LI|German (Liechtenstein)|German|Liechtenstein|Latn;|LIE|CHF|0|1407|Deutsch (Liechtenstein)|Deutsch|Liechtenstein
de-LU|German (Luxembourg)|German|Luxembourg|Latn;|LUX|EUR|0|1007|Deutsch (Luxemburg)|Deutsch|Luxemburg
dje|Zarma|Zarma|Niger|Latn;|NER|XOF|0|1000|Zarmaciine|Zarmaciine|Nižer
dje-NE|Zarma (Niger)|Zarma|Niger|Latn;|NER|XOF|0|1000|Zarmaciine (Nižer)|Zarmaciine|Nižer
doi|Dogri|Dogri|India|Deva;|IND|INR|0|1000|डोगरी|डोगरी|भारत
doi-Deva|Dogri (Devanagari)|Dogri (Devanagari)|India|Deva;|IND|INR|0|1000|डोगरी (देवनागरी)|डोगरी|भारत
doi-Deva-IN|Dogri (Devanagari, India)|Dogri (Devanagari)|India|Deva;|IND|INR|0|1000|डोगरी (भारत)|डोगरी|भारत
dsb|Lower Sorbian|Lower Sorbian|Germany|Latn;|DEU|EUR|0|082e|dolnoserbšćina|dolnoserbšćina|Nimska
dsb-DE|Lower Sorbian (Germany)|Lower Sorbian|Germany|Latn;|DEU|EUR|0|082e|dolnoserbšćina (Nimska)|dolnoserbšćina|Nimska
dua|Duala|Duala|Cameroon|Latn;|CMR|XAF|0|1000|duálá|duálá|Cameroun
dua-CM|Duala (Cameroon)|Duala|Cameroon|Latn;|CMR|XAF|0|1000|duálá (Cameroun)|duálá|Cameroun
dv|Divehi|Divehi|Maldives|Thaa;|MDV|MVR|1|0465|ދިވެހިބަސް|ދިވެހިބަސް|ދިވެހި ރާއްޖެ
dv-MV|Divehi (Maldives)|Divehi|Maldives|Thaa;|MDV|MVR|1|0465|ދިވެހިބަސް (ދިވެހި ރާއްޖެ)|ދިވެހިބަސް|ދިވެހި ރާއްޖެ
dyo|Jola-Fonyi|Jola-Fonyi|Senegal|Latn;|SEN|XOF|0|1000|joola|joola|Senegal
dyo-SN|Jola-Fonyi (Senegal)|Jola-Fonyi|Senegal|Latn;|SEN|XOF|0|1000|joola (Senegal)|joola|Senegal
dz|Dzongkha|Dzongkha|Bhutan|Tibt;|BTN|BTN|0|0c51|རྫོང་ཁ|རྫོང་ཁ|འབྲུག
dz-BT|Dzongkha (Bhutan)|Dzongkha|Bhutan|Tibt;|BTN|BTN|0|0c51|རྫོང་ཁ (འབྲུག)|རྫོང་ཁ|འབྲུག
ebu|Embu|Embu|Kenya|Latn;|KEN|KES|0|1000|Kĩembu|Kĩembu|Kenya
ebu-KE|Embu (Kenya)|Embu|Kenya|Latn;|KEN|KES|0|1000|Kĩembu (Kenya)|Kĩembu|Kenya
ee|Ewe|Ewe|Ghana|Latn;|GHA|GHS|0|1000|Eʋegbe|Eʋegbe|Ghana nutome
ee-GH|Ewe (Ghana)|Ewe|Ghana|Latn;|GHA|GHS|0|1000|Eʋegbe (Ghana nutome)|Eʋegbe|Ghana nutome
ee-TG|Ewe (Togo)|Ewe|Togo|Latn;|TGO|XOF|0|1000|Eʋegbe (Togo nutome)|Eʋegbe|Togo nutome
el|Greek|Greek|Greece|Grek;|GRC|EUR|0|0408|Ελληνικά|Ελληνικά|Ελλάδα
el-CY|Greek (Cyprus)|Greek|Cyprus|Grek;|CYP|EUR|0|1000|Ελληνικά (Κύπρος)|Ελληνικά|Κύπρος
el-GR|Greek (Greece)|Greek|Greece|Grek;|GRC|EUR|0|0408|Ελληνικά (Ελλάδα)|Ελληνικά|Ελλάδα
en|English|English|United States|Latn;|USA|USD|0|0409|English|English|United States
en-001|English (World)|English|World|Latn;|001|XDR|0|1000|English (World)|English|World
en-029|English (Caribbean)|English|Caribbean|Latn;|029|XCD|0|2409|English (Caribbean)|English|Caribbean
en-150|English (Europe)|English|Europe|Latn;|150|XDR|0|1000|English (Europe)|English|Europe
en-AE|English (United Arab Emirates)|English|United Arab Emirates|Latn;|ARE|AED|0|4c09|English (United Arab Emirates)|English|United Arab Emirates
en-AG|English (Antigua & Barbuda)|English|Antigua & Barbuda|Latn;|ATG|XCD|0|1000|English (Antigua & Barbuda)|English|Antigua & Barbuda
en-AI|English (Anguilla)|English|Anguilla|Latn;|AIA|XCD|0|1000|English (Anguilla)|English|Anguilla
en-AS|English (American Samoa)|English|American Samoa|Latn;|ASM|USD|0|1000|English (American Samoa)|English|American Samoa
en-AT|English (Austria)|English|Austria|Latn;|AUT|EUR|0|1000|English (Austria)|English|Austria
en-AU|English (Australia)|English|Australia|Latn;|AUS|AUD|0|0c09|English (Australia)|English|Australia
en-BB|English (Barbados)|English|Barbados|Latn;|BRB|BBD|0|1000|English (Barbados)|English|Barbados
en-BE|English (Belgium)|English|Belgium|Latn;|BEL|EUR|0|1000|English (Belgium)|English|Belgium
en-BI|English (Burundi)|English|Burundi|Latn;|BDI|BIF|0|1000|English (Burundi)|English|Burundi
en-BM|English (Bermuda)|English|Bermuda|Latn;|BMU|BMD|0|1000|English (Bermuda)|English|Bermuda
en-BS|English (Bahamas)|English|Bahamas|Latn;|BHS|BSD|0|1000|English (Bahamas)|English|Bahamas
en-BW|English (Botswana)|English|Botswana|Latn;|BWA|BWP|0|1000|English (Botswana)|English|Botswana
en-BZ|English (Belize)|English|Belize|Latn;|BLZ|BZD|0|2809|English (Belize)|English|Belize
en-CA|English (Canada)|English|Canada|Latn;|CAN|CAD|0|1009|English (Canada)|English|Canada
en-CC|English (Cocos (Keeling) Islands)|English|Cocos (Keeling) Islands|Latn;|CCK|AUD|0|1000|English (Cocos (Keeling) Islands)|English|Cocos (Keeling) Islands
en-CH|English (Switzerland)|English|Switzerland|Latn;|CHE|CHF|0|1000|English (Switzerland)|English|Switzerland
en-CK|English (Cook Islands)|English|Cook Islands|Latn;|COK|NZD|0|1000|English (Cook Islands)|English|Cook Islands
en-CM|English (Cameroon)|English|Cameroon|Latn;|CMR|XAF|0|1000|English (Cameroon)|English|Cameroon
en-CX|English (Christmas Island)|English|Christmas Island|Latn;|CXR|AUD|0|1000|English (Christmas Island)|English|Christmas Island
en-CY|English (Cyprus)|English|Cyprus|Latn;|CYP|EUR|0|1000|English (Cyprus)|English|Cyprus
en-DE|English (Germany)|English|Germany|Latn;|DEU|EUR|0|1000|English (Germany)|English|Germany
en-DK|English (Denmark)|English|Denmark|Latn;|DNK|DKK|0|1000|English (Denmark)|English|Denmark
en-DM|English (Dominica)|English|Dominica|Latn;|DMA|XCD|0|1000|English (Dominica)|English|Dominica
en-ER|English (Eritrea)|English|Eritrea|Latn;|ERI|ERN|0|1000|English (Eritrea)|English|Eritrea
en-FI|English (Finland)|English|Finland|Latn;|FIN|EUR|0|1000|English (Finland)|English|Finland
en-FJ|English (Fiji)|English|Fiji|Latn;|FJI|FJD|0|1000|English (Fiji)|English|Fiji
en-FK|English (Falkland Islands)|English|Falkland Islands|Latn;|FLK|FKP|0|1000|English (Falkland Islands)|English|Falkland Islands
en-FM|English (Micronesia)|English|Micronesia|Latn;|FSM|USD|0|1000|English (Micronesia)|English|Micronesia
en-GB|English (United Kingdom)|English|United Kingdom|Latn;|GBR|GBP|0|0809|English (United Kingdom)|English|United Kingdom
en-GD|English (Grenada)|English|Grenada|Latn;|GRD|XCD|0|1000|English (Grenada)|English|Grenada
en-GG|English (Guernsey)|English|Guernsey|Latn;|GGY|GBP|0|1000|English (Guernsey)|English|Guernsey
en-GH|English (Ghana)|English|Ghana|Latn;|GHA|GHS|0|1000|English (Ghana)|English|Ghana
en-GI|English (Gibraltar)|English|Gibraltar|Latn;|GIB|GIP|0|1000|English (Gibraltar)|English|Gibraltar
en-GM|English (Gambia)|English|Gambia|Latn;|GMB|GMD|0|1000|English (Gambia)|English|Gambia
en-GU|English (Guam)|English|Guam|Latn;|GUM|USD|0|1000|English (Guam)|English|Guam
en-GY|English (Guyana)|English|Guyana|Latn;|GUY|GYD|0|1000|English (Guyana)|English|Guyana
en-HK|English (Hong Kong SAR)|English|Hong Kong SAR|Latn;|HKG|HKD|0|3c09|English (Hong Kong SAR)|English|Hong Kong SAR
en-ID|English (Indonesia)|English|Indonesia|Latn;|IDN|IDR|0|3809|English (Indonesia)|English|Indonesia
en-IE|English (Ireland)|English|Ireland|Latn;|IRL|EUR|0|1809|English (Ireland)|English|Ireland
en-IL|English (Israel)|English|Israel|Latn;|ISR|ILS|0|1000|English (Israel)|English|Israel
en-IM|English (Isle of Man)|English|Isle of Man|Latn;|IMN|GBP|0|1000|English (Isle of Man)|English|Isle of Man
en-IN|English (India)|English|India|Latn;|IND|INR|0|4009|English (India)|English|India
en-IO|English (British Indian Ocean Territory)|English|British Indian Ocean Territory|Latn;|IOT|USD|0|1000|English (British Indian Ocean Territory)|English|British Indian Ocean Territory
en-JE|English (Jersey)|English|Jersey|Latn;|JEY|GBP|0|1000|English (Jersey)|English|Jersey
en-JM|English (Jamaica)|English|Jamaica|Latn;|JAM|JMD|0|2009|English (Jamaica)|English|Jamaica
en-KE|English (Kenya)|English|Kenya|Latn;|KEN|KES|0|1000|English (Kenya)|English|Kenya
en-KI|English (Kiribati)|English|Kiribati|Latn;|KIR|AUD|0|1000|English (Kiribati)|English|Kiribati
en-KN|English (St. Kitts & Nevis)|English|St. Kitts & Nevis|Latn;|KNA|XCD|0|1000|English (St. Kitts & Nevis)|English|St. Kitts & Nevis
en-KY|English (Cayman Islands)|English|Cayman Islands|Latn;|CYM|KYD|0|1000|English (Cayman Islands)|English|Cayman Islands
en-LC|English (St. Lucia)|English|St. Lucia|Latn;|LCA|XCD|0|1000|English (St. Lucia)|English|St. Lucia
en-LR|English (Liberia)|English|Liberia|Latn;|LBR|LRD|0|1000|English (Liberia)|English|Liberia
en-LS|English (Lesotho)|English|Lesotho|Latn;|LSO|ZAR|0|1000|English (Lesotho)|English|Lesotho
en-MG|English (Madagascar)|English|Madagascar|Latn;|MDG|MGA|0|1000|English (Madagascar)|English|Madagascar
en-MH|English (Marshall Islands)|English|Marshall Islands|Latn;|MHL|USD|0|1000|English (Marshall Islands)|English|Marshall Islands
en-MO|English (Macao SAR)|English|Macao SAR|Latn;|MAC|MOP|0|1000|English (Macao SAR)|English|Macao SAR
en-MP|English (Northern Mariana Islands)|English|Northern Mariana Islands|Latn;|MNP|USD|0|1000|English (Northern Mariana Islands)|English|Northern Mariana Islands
en-MS|English (Montserrat)|English|Montserrat|Latn;|MSR|XCD|0|1000|English (Montserrat)|English|Montserrat
en-MT|English (Malta)|English|Malta|Latn;|MLT|EUR|0|1000|English (Malta)|English|Malta
en-MU|English (Mauritius)|English|Mauritius|Latn;|MUS|MUR|0|1000|English (Mauritius)|English|Mauritius
en-MW|English (Malawi)|English|Malawi|Latn;|MWI|MWK|0|1000|English (Malawi)|English|Malawi
en-MY|English (Malaysia)|English|Malaysia|Latn;|MYS|MYR|0|4409|English (Malaysia)|English|Malaysia
en-NA|English (Namibia)|English|Namibia|Latn;|NAM|NAD|0|1000|English (Namibia)|English|Namibia
en-NF|English (Norfolk Island)|English|Norfolk Island|Latn;|NFK|AUD|0|1000|English (Norfolk Island)|English|Norfolk Island
en-NG|English (Nigeria)|English|Nigeria|Latn;|NGA|NGN|0|1000|English (Nigeria)|English|Nigeria
en-NL|English (Netherlands)|English|Netherlands|Latn;|NLD|EUR|0|1000|English (Netherlands)|English|Netherlands
en-NR|English (Nauru)|English|Nauru|Latn;|NRU|AUD|0|1000|English (Nauru)|English|Nauru
en-NU|English (Niue)|English|Niue|Latn;|NIU|NZD|0|1000|English (Niue)|English|Niue
en-NZ|English (New Zealand)|English|New Zealand|Latn;|NZL|NZD|0|1409|English (New Zealand)|English|New Zealand
en-PG|English (Papua New Guinea)|English|Papua New Guinea|Latn;|PNG|PGK|0|1000|English (Papua New Guinea)|English|Papua New Guinea
en-PH|English (Philippines)|English|Philippines|Latn;|PHL|PHP|0|3409|English (Philippines)|English|Philippines
en-PK|English (Pakistan)|English|Pakistan|Latn;|PAK|PKR|0|1000|English (Pakistan)|English|Pakistan
en-PN|English (Pitcairn Islands)|English|Pitcairn Islands|Latn;|PCN|NZD|0|1000|English (Pitcairn Islands)|English|Pitcairn Islands
en-PR|English (Puerto Rico)|English|Puerto Rico|Latn;|PRI|USD|0|1000|English (Puerto Rico)|English|Puerto Rico
en-PW|English (Palau)|English|Palau|Latn;|PLW|USD|0|1000|English (Palau)|English|Palau
en-RW|English (Rwanda)|English|Rwanda|Latn;|RWA|RWF|0|1000|English (Rwanda)|English|Rwanda
en-SB|English (Solomon Islands)|English|Solomon Islands|Latn;|SLB|SBD|0|1000|English (Solomon Islands)|English|Solomon Islands
en-SC|English (Seychelles)|English|Seychelles|Latn;|SYC|SCR|0|1000|English (Seychelles)|English|Seychelles
en-SD|English (Sudan)|English|Sudan|Latn;|SDN|SDG|0|1000|English (Sudan)|English|Sudan
en-SE|English (Sweden)|English|Sweden|Latn;|SWE|SEK|0|1000|English (Sweden)|English|Sweden
en-SG|English (Singapore)|English|Singapore|Latn;|SGP|SGD|0|4809|English (Singapore)|English|Singapore
en-SH|English (St Helena, Ascension, Tristan da Cunha)|English|St Helena, Ascension, Tristan da Cunha|Latn;|SHN|SHP|0|1000|English (St Helena, Ascension, Tristan da Cunha)|English|St Helena, Ascension, Tristan da Cunha
en-SI|English (Slovenia)|English|Slovenia|Latn;|SVN|EUR|0|1000|English (Slovenia)|English|Slovenia
en-SL|English (Sierra Leone)|English|Sierra Leone|Latn;|SLE|SLL|0|1000|English (Sierra Leone)|English|Sierra Leone
en-SS|English (South Sudan)|English|South Sudan|Latn;|SSD|SSP|0|1000|English (South Sudan)|English|South Sudan
en-SX|English (Sint Maarten)|English|Sint Maarten|Latn;|SXM|ANG|0|1000|English (Sint Maarten)|English|Sint Maarten
en-SZ|English (Eswatini)|English|Eswatini|Latn;|SWZ|SZL|0|1000|English (Eswatini)|English|Eswatini
en-TC|English (Turks & Caicos Islands)|English|Turks & Caicos Islands|Latn;|TCA|USD|0|1000|English (Turks & Caicos Islands)|English|Turks & Caicos Islands
en-TK|English (Tokelau)|English|Tokelau|Latn;|TKL|NZD|0|1000|English (Tokelau)|English|Tokelau
en-TO|English (Tonga)|English|Tonga|Latn;|TON|TOP|0|1000|English (Tonga)|English|Tonga
en-TT|English (Trinidad & Tobago)|English|Trinidad & Tobago|Latn;|TTO|TTD|0|2c09|English (Trinidad & Tobago)|English|Trinidad & Tobago
en-TV|English (Tuvalu)|English|Tuvalu|Latn;|TUV|AUD|0|1000|English (Tuvalu)|English|Tuvalu
en-TZ|English (Tanzania)|English|Tanzania|Latn;|TZA|TZS|0|1000|English (Tanzania)|English|Tanzania
en-UG|English (Uganda)|English|Uganda|Latn;|UGA|UGX|0|1000|English (Uganda)|English|Uganda
en-UM|English (U.S. Outlying Islands)|English|U.S. Outlying Islands|Latn;|UMI|USD|0|1000|English (U.S. Outlying Islands)|English|U.S. Outlying Islands
en-US|English (United States)|English|United States|Latn;|USA|USD|0|0409|English (United States)|English|United States
en-VC|English (St. Vincent & Grenadines)|English|St. Vincent & Grenadines|Latn;|VCT|XCD|0|1000|English (St. Vincent & Grenadines)|English|St. Vincent & Grenadines
en-VG|English (British Virgin Islands)|English|British Virgin Islands|Latn;|VGB|USD|0|1000|English (British Virgin Islands)|English|British Virgin Islands
en-VI|English (U.S. Virgin Islands)|English|U.S. Virgin Islands|Latn;|VIR|USD|0|1000|English (U.S. Virgin Islands)|English|U.S. Virgin Islands
en-VU|English (Vanuatu)|English|Vanuatu|Latn;|VUT|VUV|0|1000|English (Vanuatu)|English|Vanuatu
en-WS|English (Samoa)|English|Samoa|Latn;|WSM|WST|0|1000|English (Samoa)|English|Samoa
en-ZA|English (South Africa)|English|South Africa|Latn;|ZAF|ZAR|0|1c09|English (South Africa)|English|South Africa
en-ZM|English (Zambia)|English|Zambia|Latn;|ZMB|ZMW|0|1000|English (Zambia)|English|Zambia
en-ZW|English (Zimbabwe)|English|Zimbabwe|Latn;|ZWE|USD|0|3009|English (Zimbabwe)|English|Zimbabwe
eo|Esperanto|Esperanto|World|Latn;|001|XDR|0|1000|esperanto|esperanto|Mondo
eo-001|Esperanto (World)|Esperanto|World|Latn;|001|XDR|0|1000|esperanto (Mondo)|esperanto|Mondo
es|Spanish|Spanish|Spain|Latn;|ESP|EUR|0|0c0a|español|español|España
es-419|Spanish (Latin America)|Spanish|Latin America|Latn;|419|XDR|0|580a|español (Latinoamérica)|español|Latinoamérica
es-AR|Spanish (Argentina)|Spanish|Argentina|Latn;|ARG|ARS|0|2c0a|español (Argentina)|español|Argentina
es-BO|Spanish (Bolivia)|Spanish|Bolivia|Latn;|BOL|BOB|0|400a|español (Bolivia)|español|Bolivia
es-BR|Spanish (Brazil)|Spanish|Brazil|Latn;|BRA|BRL|0|1000|español (Brasil)|español|Brasil
es-BZ|Spanish (Belize)|Spanish|Belize|Latn;|BLZ|BZD|0|1000|español (Belice)|español|Belice
es-CL|Spanish (Chile)|Spanish|Chile|Latn;|CHL|CLP|0|340a|español (Chile)|español|Chile
es-CO|Spanish (Colombia)|Spanish|Colombia|Latn;|COL|COP|0|240a|español (Colombia)|español|Colombia
es-CR|Spanish (Costa Rica)|Spanish|Costa Rica|Latn;|CRI|CRC|0|140a|español (Costa Rica)|español|Costa Rica
es-CU|Spanish (Cuba)|Spanish|Cuba|Latn;|CUB|CUP|0|5c0a|español (Cuba)|español|Cuba
es-DO|Spanish (Dominican Republic)|Spanish|Dominican Republic|Latn;|DOM|DOP|0|1c0a|español (República Dominicana)|español|República Dominicana
es-EC|Spanish (Ecuador)|Spanish|Ecuador|Latn;|ECU|USD|0|300a|español (Ecuador)|español|Ecuador
es-ES|Spanish (Spain, International Sort)|Spanish|Spain|Latn;|ESP|EUR|0|0c0a|español (España, alfabetización internacional)|español|España
es-GQ|Spanish (Equatorial Guinea)|Spanish|Equatorial Guinea|Latn;|GNQ|XAF|0|1000|español (Guinea Ecuatorial)|español|Guinea Ecuatorial
es-GT|Spanish (Guatemala)|Spanish|Guatemala|Latn;|GTM|GTQ|0|100a|español (Guatemala)|español|Guatemala
es-HN|Spanish (Honduras)|Spanish|Honduras|Latn;|HND|HNL|0|480a|español (Honduras)|español|Honduras
es-MX|Spanish (Mexico)|Spanish|Mexico|Latn;|MEX|MXN|0|080a|español (México)|español|México
es-NI|Spanish (Nicaragua)|Spanish|Nicaragua|Latn;|NIC|NIO|0|4c0a|español (Nicaragua)|español|Nicaragua
es-PA|Spanish (Panama)|Spanish|Panama|Latn;|PAN|PAB|0|180a|español (Panamá)|español|Panamá
es-PE|Spanish (Peru)|Spanish|Peru|Latn;|PER|PEN|0|280a|español (Perú)|español|Perú
es-PH|Spanish (Philippines)|Spanish|Philippines|Latn;|PHL|PHP|0|1000|español (Filipinas)|español|Filipinas
es-PR|Spanish (Puerto Rico)|Spanish|Puerto Rico|Latn;|PRI|USD|0|500a|español (Puerto Rico)|español|Puerto Rico
es-PY|Spanish (Paraguay)|Spanish|Paraguay|Latn;|PRY|PYG|0|3c0a|español (Paraguay)|español|Paraguay
es-SV|Spanish (El Salvador)|Spanish|El Salvador|Latn;|SLV|USD|0|440a|español (El Salvador)|español|El Salvador
es-US|Spanish (United States)|Spanish|United States|Latn;|USA|USD|0|540a|español (Estados Unidos)|español|Estados Unidos
es-UY|Spanish (Uruguay)|Spanish|Uruguay|Latn;|URY|UYU|0|380a|español (Uruguay)|español|Uruguay
es-VE|Spanish (Venezuela)|Spanish|Venezuela|Latn;|VEN|VES|0|200a|español (Venezuela)|español|Venezuela
et|Estonian|Estonian|Estonia|Latn;|EST|EUR|0|0425|eesti|eesti|Eesti
et-EE|Estonian (Estonia)|Estonian|Estonia|Latn;|EST|EUR|0|0425|eesti (Eesti)|eesti|Eesti
eu|Basque|Basque|Spain|Latn;|ESP|EUR|0|042d|euskara|euskara|Espainia
eu-ES|Basque (Basque)|Basque|Spain|Latn;|ESP|EUR|0|042d|euskara (euskara)|euskara|Espainia
ewo|Ewondo|Ewondo|Cameroon|Latn;|CMR|XAF|0|1000|ewondo|ewondo|Kamərún
ewo-CM|Ewondo (Cameroon)|Ewondo|Cameroon|Latn;|CMR|XAF|0|1000|ewondo (Kamərún)|ewondo|Kamərún
fa|Persian|Persian|Iran|Arab;|IRN|IRR|1|0429|فارسی|فارسی|ایران
fa-AF|Persian (Afghanistan)|Persian|Afghanistan|Arab;|AFG|AFN|1|048c|فارسی (افغانستان)|فارسی|افغانستان
fa-IR|Persian (Iran)|Persian|Iran|Arab;|IRN|IRR|1|0429|فارسی (ایران)|فارسی|ایران
ff|Fulah|Fulah|Senegal|Latn;|SEN|XOF|0|0867|Pulaar|Pulaar|Senegaal
ff-Adlm|Fulah (Adlam)|Fulah (Adlam)|Guinea|Adlm;|GIN|GNF|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤀𞤁𞤂𞤢𞤃)|𞤆𞤵𞤤𞤢𞤪|𞤘𞤭𞤲𞤫
ff-Adlm-BF|Fulah (Adlam, Burkina Faso)|Fulah (Adlam)|Burkina Faso|Adlm;|BFA|XOF|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤄𞤵𞤪𞤳𞤭𞤲𞤢 𞤊𞤢𞤧𞤮𞥅)|𞤆𞤵𞤤𞤢𞤪|𞤄𞤵𞤪𞤳𞤭𞤲𞤢 𞤊𞤢𞤧𞤮𞥅
ff-Adlm-CM|Fulah (Adlam, Cameroon)|Fulah (Adlam)|Cameroon|Adlm;|CMR|XAF|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤑𞤢𞤥𞤢𞤪𞤵𞥅𞤲)|𞤆𞤵𞤤𞤢𞤪|𞤑𞤢𞤥𞤢𞤪𞤵𞥅𞤲
ff-Adlm-GH|Fulah (Adlam, Ghana)|Fulah (Adlam)|Ghana|Adlm;|GHA|GHS|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤘𞤢𞤲𞤢)|𞤆𞤵𞤤𞤢𞤪|𞤘𞤢𞤲𞤢
ff-Adlm-GM|Fulah (Adlam, Gambia)|Fulah (Adlam)|Gambia|Adlm;|GMB|GMD|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤘𞤢𞤥𞤦𞤭𞤴𞤢)|𞤆𞤵𞤤𞤢𞤪|𞤘𞤢𞤥𞤦𞤭𞤴𞤢
ff-Adlm-GN|Fulah (Adlam, Guinea)|Fulah (Adlam)|Guinea|Adlm;|GIN|GNF|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤘𞤭𞤲𞤫)|𞤆𞤵𞤤𞤢𞤪|𞤘𞤭𞤲𞤫
ff-Adlm-GW|Fulah (Adlam, Guinea-Bissau)|Fulah (Adlam)|Guinea-Bissau|Adlm;|GNB|XOF|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤘𞤭𞤲𞤫-𞤄𞤭𞤧𞤢𞤱𞤮𞥅)|𞤆𞤵𞤤𞤢𞤪|𞤘𞤭𞤲𞤫-𞤄𞤭𞤧𞤢𞤱𞤮𞥅
ff-Adlm-LR|Fulah (Adlam, Liberia)|Fulah (Adlam)|Liberia|Adlm;|LBR|LRD|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤂𞤢𞤦𞤭𞤪𞤭𞤴𞤢𞥄)|𞤆𞤵𞤤𞤢𞤪|𞤂𞤢𞤦𞤭𞤪𞤭𞤴𞤢𞥄
ff-Adlm-MR|Fulah (Adlam, Mauritania)|Fulah (Adlam)|Mauritania|Adlm;|MRT|MRU|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤃𞤮𞤪𞤼𞤢𞤲𞤭𞥅)|𞤆𞤵𞤤𞤢𞤪|𞤃𞤮𞤪𞤼𞤢𞤲𞤭𞥅
ff-Adlm-NE|Fulah (Adlam, Niger)|Fulah (Adlam)|Niger|Adlm;|NER|XOF|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤐𞤭𞥅𞤶𞤫𞤪)|𞤆𞤵𞤤𞤢𞤪|𞤐𞤭𞥅𞤶𞤫𞤪
ff-Adlm-NG|Fulah (Adlam, Nigeria)|Fulah (Adlam)|Nigeria|Adlm;|NGA|NGN|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤐𞤢𞤶𞤫𞤪𞤭𞤴𞤢𞥄)|𞤆𞤵𞤤𞤢𞤪|𞤐𞤢𞤶𞤫𞤪𞤭𞤴𞤢𞥄
ff-Adlm-SL|Fulah (Adlam, Sierra Leone)|Fulah (Adlam)|Sierra Leone|Adlm;|SLE|SLL|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤅𞤢𞤪𞤢𞤤𞤮𞤲)|𞤆𞤵𞤤𞤢𞤪|𞤅𞤢𞤪𞤢𞤤𞤮𞤲
ff-Adlm-SN|Fulah (Adlam, Senegal)|Fulah (Adlam)|Senegal|Adlm;|SEN|XOF|0|1000|𞤆𞤵𞤤𞤢𞤪 (𞤅𞤫𞤲𞤫𞤺𞤢𞥄𞤤)|𞤆𞤵𞤤𞤢𞤪|𞤅𞤫𞤲𞤫𞤺𞤢𞥄𞤤
ff-Latn|Fulah (Latin)|Fulah (Latin)|Senegal|Latn;|SEN|XOF|0|0867|Pulaar|Pulaar|Senegaal
ff-Latn-BF|Fulah (Latin, Burkina Faso)|Fulah (Latin)|Burkina Faso|Latn;|BFA|XOF|0|1000|Pulaar (Burkibaa Faaso)|Pulaar|Burkibaa Faaso
ff-Latn-CM|Fulah (Latin, Cameroon)|Fulah (Latin)|Cameroon|Latn;|CMR|XAF|0|1000|Pulaar (Kameruun)|Pulaar|Kameruun
ff-Latn-GH|Fulah (Latin, Ghana)|Fulah (Latin)|Ghana|Latn;|GHA|GHS|0|1000|Pulaar (Ganaa)|Pulaar|Ganaa
ff-Latn-GM|Fulah (Latin, Gambia)|Fulah (Latin)|Gambia|Latn;|GMB|GMD|0|1000|Pulaar (Gammbi)|Pulaar|Gammbi
ff-Latn-GN|Fulah (Latin, Guinea)|Fulah (Latin)|Guinea|Latn;|GIN|GNF|0|1000|Pulaar (Gine)|Pulaar|Gine
ff-Latn-GW|Fulah (Latin, Guinea-Bissau)|Fulah (Latin)|Guinea-Bissau|Latn;|GNB|XOF|0|1000|Pulaar (Gine-Bisaawo)|Pulaar|Gine-Bisaawo
ff-Latn-LR|Fulah (Latin, Liberia)|Fulah (Latin)|Liberia|Latn;|LBR|LRD|0|1000|Pulaar (Liberiyaa)|Pulaar|Liberiyaa
ff-Latn-MR|Fulah (Latin, Mauritania)|Fulah (Latin)|Mauritania|Latn;|MRT|MRU|0|1000|Pulaar (Muritani)|Pulaar|Muritani
ff-Latn-NE|Fulah (Latin, Niger)|Fulah (Latin)|Niger|Latn;|NER|XOF|0|1000|Pulaar (Nijeer)|Pulaar|Nijeer
ff-Latn-NG|Fulah (Latin, Nigeria)|Fulah (Latin)|Nigeria|Latn;|NGA|NGN|0|0467|Pulaar (Nijeriyaa)|Pulaar|Nijeriyaa
ff-Latn-SL|Fulah (Latin, Sierra Leone)|Fulah (Latin)|Sierra Leone|Latn;|SLE|SLL|0|1000|Pulaar (Seraa liyon)|Pulaar|Seraa liyon
ff-Latn-SN|Fulah (Latin, Senegal)|Fulah (Latin)|Senegal|Latn;|SEN|XOF|0|0867|Pulaar (Senegaal)|Pulaar|Senegaal
fi|Finnish|Finnish|Finland|Latn;|FIN|EUR|0|040b|suomi|suomi|Suomi
fi-FI|Finnish (Finland)|Finnish|Finland|Latn;|FIN|EUR|0|040b|suomi (Suomi)|suomi|Suomi
fil|Filipino|Filipino|Philippines|Latn;|PHL|PHP|0|0464|Filipino|Filipino|Pilipinas
fil-PH|Filipino (Philippines)|Filipino|Philippines|Latn;|PHL|PHP|0|0464|Filipino (Pilipinas)|Filipino|Pilipinas
fo|Faroese|Faroese|Faroe Islands|Latn;|FRO|DKK|0|0438|føroyskt|føroyskt|Føroyar
fo-DK|Faroese (Denmark)|Faroese|Denmark|Latn;|DNK|DKK|0|1000|føroyskt (Danmark)|føroyskt|Danmark
fo-FO|Faroese (Faroe Islands)|Faroese|Faroe Islands|Latn;|FRO|DKK|0|0438|føroyskt (Føroyar)|føroyskt|Føroyar
fr|French|French|France|Latn;|FRA|EUR|0|040c|français|français|France
fr-029|French (Caribbean)|French|Caribbean|Latn;|029|XCD|0|1c0c|français (Caraïbes)|français|Caraïbes
fr-BE|French (Belgium)|French|Belgium|Latn;|BEL|EUR|0|080c|français (Belgique)|français|Belgique
fr-BF|French (Burkina Faso)|French|Burkina Faso|Latn;|BFA|XOF|0|1000|français (Burkina Faso)|français|Burkina Faso
fr-BI|French (Burundi)|French|Burundi|Latn;|BDI|BIF|0|1000|français (Burundi)|français|Burundi
fr-BJ|French (Benin)|French|Benin|Latn;|BEN|XOF|0|1000|français (Bénin)|français|Bénin
fr-BL|French (St. Barthélemy)|French|St. Barthélemy|Latn;|BLM|EUR|0|1000|français (Saint-Barthélemy)|français|Saint-Barthélemy
fr-CA|French (Canada)|French|Canada|Latn;|CAN|CAD|0|0c0c|français (Canada)|français|Canada
fr-CD|French Congo (DRC)|French|Congo (DRC)|Latn;|COD|CDF|0|240c|français (Congo, République démocratique du)|français|Congo, République démocratique du
fr-CF|French (Central African Republic)|French|Central African Republic|Latn;|CAF|XAF|0|1000|français (République centrafricaine)|français|République centrafricaine
fr-CG|French (Congo)|French|Congo|Latn;|COG|XAF|0|1000|français (Congo)|français|Congo
fr-CH|French (Switzerland)|French|Switzerland|Latn;|CHE|CHF|0|100c|français (Suisse)|français|Suisse
fr-CI|French (Côte dIvoire)|French|Côte dIvoire|Latn;|CIV|XOF|0|300c|français (Côte dIvoire)|français|Côte dIvoire
fr-CM|French (Cameroon)|French|Cameroon|Latn;|CMR|XAF|0|2c0c|français (Cameroun)|français|Cameroun
fr-DJ|French (Djibouti)|French|Djibouti|Latn;|DJI|DJF|0|1000|français (Djibouti)|français|Djibouti
fr-DZ|French (Algeria)|French|Algeria|Latn;|DZA|DZD|0|1000|français (Algérie)|français|Algérie
fr-FR|French (France)|French|France|Latn;|FRA|EUR|0|040c|français (France)|français|France
fr-GA|French (Gabon)|French|Gabon|Latn;|GAB|XAF|0|1000|français (Gabon)|français|Gabon
fr-GF|French (French Guiana)|French|French Guiana|Latn;|GUF|EUR|0|1000|français (Guyane française)|français|Guyane française
fr-GN|French (Guinea)|French|Guinea|Latn;|GIN|GNF|0|1000|français (Guinée)|français|Guinée
fr-GP|French (Guadeloupe)|French|Guadeloupe|Latn;|GLP|EUR|0|1000|français (Guadeloupe)|français|Guadeloupe
fr-GQ|French (Equatorial Guinea)|French|Equatorial Guinea|Latn;|GNQ|XAF|0|1000|français (Guinée équatoriale)|français|Guinée équatoriale
fr-HT|French (Haiti)|French|Haiti|Latn;|HTI|HTG|0|3c0c|français (Haïti)|français|Haïti
fr-KM|French (Comoros)|French|Comoros|Latn;|COM|KMF|0|1000|français (Comores)|français|Comores
fr-LU|French (Luxembourg)|French|Luxembourg|Latn;|LUX|EUR|0|140c|français (Luxembourg)|français|Luxembourg
fr-MA|French (Morocco)|French|Morocco|Latn;|MAR|MAD|0|380c|français (Maroc)|français|Maroc
fr-MC|French (Monaco)|French|Monaco|Latn;|MCO|EUR|0|180c|français (Monaco)|français|Monaco
fr-MF|French (St. Martin)|French|St. Martin|Latn;|MAF|EUR|0|1000|français (Saint-Martin)|français|Saint-Martin
fr-MG|French (Madagascar)|French|Madagascar|Latn;|MDG|MGA|0|1000|français (Madagascar)|français|Madagascar
fr-ML|French (Mali)|French|Mali|Latn;|MLI|XOF|0|340c|français (Mali)|français|Mali
fr-MQ|French (Martinique)|French|Martinique|Latn;|MTQ|EUR|0|1000|français (Martinique)|français|Martinique
fr-MR|French (Mauritania)|French|Mauritania|Latn;|MRT|MRU|0|1000|français (Mauritanie)|français|Mauritanie
fr-MU|French (Mauritius)|French|Mauritius|Latn;|MUS|MUR|0|1000|français (Maurice)|français|Maurice
fr-NC|French (New Caledonia)|French|New Caledonia|Latn;|NCL|XPF|0|1000|français (Nouvelle-Calédonie)|français|Nouvelle-Calédonie
fr-NE|French (Niger)|French|Niger|Latn;|NER|XOF|0|1000|français (Niger)|français|Niger
fr-PF|French (French Polynesia)|French|French Polynesia|Latn;|PYF|XPF|0|1000|français (Polynésie française)|français|Polynésie française
fr-PM|French (St. Pierre & Miquelon)|French|St. Pierre & Miquelon|Latn;|SPM|EUR|0|1000|français (Saint-Pierre-et-Miquelon)|français|Saint-Pierre-et-Miquelon
fr-RE|French (Réunion)|French|Réunion|Latn;|REU|EUR|0|200c|français (La Réunion)|français|La Réunion
fr-RW|French (Rwanda)|French|Rwanda|Latn;|RWA|RWF|0|1000|français (Rwanda)|français|Rwanda
fr-SC|French (Seychelles)|French|Seychelles|Latn;|SYC|SCR|0|1000|français (Seychelles)|français|Seychelles
fr-SN|French (Senegal)|French|Senegal|Latn;|SEN|XOF|0|280c|français (Sénégal)|français|Sénégal
fr-SY|French (Syria)|French|Syria|Latn;|SYR|SYP|0|1000|français (Syrie)|français|Syrie
fr-TD|French (Chad)|French|Chad|Latn;|TCD|XAF|0|1000|français (Tchad)|français|Tchad
fr-TG|French (Togo)|French|Togo|Latn;|TGO|XOF|0|1000|français (Togo)|français|Togo
fr-TN|French (Tunisia)|French|Tunisia|Latn;|TUN|TND|0|1000|français (Tunisie)|français|Tunisie
fr-VU|French (Vanuatu)|French|Vanuatu|Latn;|VUT|VUV|0|1000|français (Vanuatu)|français|Vanuatu
fr-WF|French (Wallis & Futuna)|French|Wallis & Futuna|Latn;|WLF|XPF|0|1000|français (Wallis-et-Futuna)|français|Wallis-et-Futuna
fr-YT|French (Mayotte)|French|Mayotte|Latn;|MYT|EUR|0|1000|français (Mayotte)|français|Mayotte
fur|Friulian|Friulian|Italy|Latn;|ITA|EUR|0|1000|furlan|furlan|Italie
fur-IT|Friulian (Italy)|Friulian|Italy|Latn;|ITA|EUR|0|1000|furlan (Italie)|furlan|Italie
fy|Western Frisian|Western Frisian|Netherlands|Latn;|NLD|EUR|0|0462|Frysk|Frysk|Nederlân
fy-NL|Western Frisian (Netherlands)|Western Frisian|Netherlands|Latn;|NLD|EUR|0|0462|Frysk (Nederlân)|Frysk|Nederlân
ga|Irish|Irish|Ireland|Latn;|IRL|EUR|0|083c|Gaeilge|Gaeilge|Éire
ga-GB|Irish (United Kingdom)|Irish|United Kingdom|Latn;|GBR|GBP|0|1000|Gaeilge (an Ríocht Aontaithe)|Gaeilge|an Ríocht Aontaithe
ga-IE|Irish (Ireland)|Irish|Ireland|Latn;|IRL|EUR|0|083c|Gaeilge (Éire)|Gaeilge|Éire
gd|Scottish Gaelic|Scottish Gaelic|United Kingdom|Latn;|GBR|GBP|0|0491|Gàidhlig|Gàidhlig|An Rìoghachd Aonaichte
gd-GB|Scottish Gaelic (United Kingdom)|Scottish Gaelic|United Kingdom|Latn;|GBR|GBP|0|0491|Gàidhlig (An Rìoghachd Aonaichte)|Gàidhlig|An Rìoghachd Aonaichte
gl|Galician|Galician|Spain|Latn;|ESP|EUR|0|0456|galego|galego|España
gl-ES|Galician (Galician)|Galician|Spain|Latn;|ESP|EUR|0|0456|galego (galego)|galego|España
gn|Guarani|Guarani|Paraguay|Latn;|PRY|PYG|0|0474|Avañeẽ|Avañeẽ|Paraguái
gn-PY|Guarani (Paraguay)|Guarani|Paraguay|Latn;|PRY|PYG|0|0474|Avañeẽ (Paraguái)|Avañeẽ|Paraguái
gsw|Swiss German|Swiss German|Switzerland|Latn;|CHE|CHF|0|1000|Schwiizertüütsch|Schwiizertüütsch|Schwiiz
gsw-CH|Swiss German (Switzerland)|Swiss German|Switzerland|Latn;|CHE|CHF|0|1000|Schwiizertüütsch (Schwiiz)|Schwiizertüütsch|Schwiiz
gsw-FR|Alsatian (France)|Alsatian|France|Latn;|FRA|EUR|0|0484|Elsässisch (Frànkrisch)|Elsässisch|Frànkrisch
gsw-LI|Swiss German (Liechtenstein)|Swiss German|Liechtenstein|Latn;|LIE|CHF|0|1000|Schwiizertüütsch (Liächteschtäi)|Schwiizertüütsch|Liächteschtäi
gu|Gujarati|Gujarati|India|Gujr;|IND|INR|0|0447|ગુજરાતી|ગુજરાતી|ભારત
gu-IN|Gujarati (India)|Gujarati|India|Gujr;|IND|INR|0|0447|ગુજરાતી (ભારત)|ગુજરાતી|ભારત
guz|Gusii|Gusii|Kenya|Latn;|KEN|KES|0|1000|Ekegusii|Ekegusii|Kenya
guz-KE|Gusii (Kenya)|Gusii|Kenya|Latn;|KEN|KES|0|1000|Ekegusii (Kenya)|Ekegusii|Kenya
gv|Manx|Manx|Isle of Man|Latn;|IMN|GBP|0|1000|Gaelg|Gaelg|Ellan Vannin
gv-IM|Manx (Isle of Man)|Manx|Isle of Man|Latn;|IMN|GBP|0|1000|Gaelg (Ellan Vannin)|Gaelg|Ellan Vannin
ha|Hausa|Hausa|Nigeria|Latn;|NGA|NGN|0|0468|Hausa|Hausa|Najeriya
ha-Latn|Hausa (Latin)|Hausa (Latin)|Nigeria|Latn;|NGA|NGN|0|0468|Hausa (Latin)|Hausa|Najeriya
ha-Latn-GH|Hausa (Latin, Ghana)|Hausa (Latin)|Ghana|Latn;|GHA|GHS|0|1000|Hausa (Gana)|Hausa|Gana
ha-Latn-NE|Hausa (Latin, Niger)|Hausa (Latin)|Niger|Latn;|NER|XOF|0|1000|Hausa (Nijar)|Hausa|Nijar
ha-Latn-NG|Hausa (Latin, Nigeria)|Hausa (Latin)|Nigeria|Latn;|NGA|NGN|0|0468|Hausa (Najeriya)|Hausa|Najeriya
haw|Hawaiian|Hawaiian|United States|Latn;|USA|USD|0|0475|ʻŌlelo Hawaiʻi|ʻŌlelo Hawaiʻi|ʻAmelika Hui Pū ʻIa
haw-US|Hawaiian (United States)|Hawaiian|United States|Latn;|USA|USD|0|0475|ʻŌlelo Hawaiʻi (ʻAmelika Hui Pū ʻIa)|ʻŌlelo Hawaiʻi|ʻAmelika Hui Pū ʻIa
he|Hebrew|Hebrew|Israel|Hebr;|ISR|ILS|1|040d|עברית|עברית|ישראל
he-IL|Hebrew (Israel)|Hebrew|Israel|Hebr;|ISR|ILS|1|040d|עברית (ישראל)|עברית|ישראל
hi|Hindi|Hindi|India|Deva;|IND|INR|0|0439|हिन्दी|हिन्दी|भारत
hi-IN|Hindi (India)|Hindi|India|Deva;|IND|INR|0|0439|हिन्दी (भारत)|हिन्दी|भारत
hr|Croatian|Croatian|Croatia|Latn;|HRV|EUR|0|041a|hrvatski|hrvatski|Hrvatska
hr-BA|Croatian (Bosnia & Herzegovina)|Croatian|Bosnia & Herzegovina|Latn;|BIH|BAM|0|101a|hrvatski (Bosna i Hercegovina)|hrvatski|Bosna i Hercegovina
hr-HR|Croatian (Croatia)|Croatian|Croatia|Latn;|HRV|EUR|0|041a|hrvatski (Hrvatska)|hrvatski|Hrvatska
hsb|Upper Sorbian|Upper Sorbian|Germany|Latn;|DEU|EUR|0|042e|hornjoserbšćina|hornjoserbšćina|Němska
hsb-DE|Upper Sorbian (Germany)|Upper Sorbian|Germany|Latn;|DEU|EUR|0|042e|hornjoserbšćina (Němska)|hornjoserbšćina|Němska
hu|Hungarian|Hungarian|Hungary|Latn;|HUN|HUF|0|040e|magyar|magyar|Magyarország
hu-HU|Hungarian (Hungary)|Hungarian|Hungary|Latn;|HUN|HUF|0|040e|magyar (Magyarország)|magyar|Magyarország
hy|Armenian|Armenian|Armenia|Armn;|ARM|AMD|0|042b|հայերեն|հայերեն|Հայաստան
hy-AM|Armenian (Armenia)|Armenian|Armenia|Armn;|ARM|AMD|0|042b|հայերեն (Հայաստան)|հայերեն|Հայաստան
ia|Interlingua|Interlingua|World|Latn;|001|XDR|0|1000|interlingua|interlingua|Mundo
ia-001|Interlingua (World)|Interlingua|World|Latn;|001|XDR|0|1000|interlingua (Mundo)|interlingua|Mundo
ibb|Ibibio|Ibibio|Nigeria|Latn;|NGA|NGN|0|0469|Ibibio-Efik|Ibibio-Efik|Nigeria
ibb-NG|Ibibio (Nigeria)|Ibibio|Nigeria|Latn;|NGA|NGN|0|0469|Ibibio-Efik (Nigeria)|Ibibio-Efik|Nigeria
id|Indonesian|Indonesian|Indonesia|Latn;|IDN|IDR|0|0421|Indonesia|Indonesia|Indonesia
id-ID|Indonesian (Indonesia)|Indonesian|Indonesia|Latn;|IDN|IDR|0|0421|Indonesia (Indonesia)|Indonesia|Indonesia
ig|Igbo|Igbo|Nigeria|Latn;|NGA|NGN|0|0470|Igbo|Igbo|Naịjịrịa
ig-NG|Igbo (Nigeria)|Igbo|Nigeria|Latn;|NGA|NGN|0|0470|Igbo (Naịjịrịa)|Igbo|Naịjịrịa
ii|Yi|Yi|China|Yiii;|CHN|CNY|0|0478|ꆈꌠꉙ|ꆈꌠꉙ|ꍏꉸꏓꂱꇭꉼꇩ
ii-CN|Yi (China)|Yi|China|Yiii;|CHN|CNY|0|0478|ꆈꌠꉙ (ꍏꇩ)|ꆈꌠꉙ|ꍏꉸꏓꂱꇭꉼꇩ
is|Icelandic|Icelandic|Iceland|Latn;|ISL|ISK|0|040f|íslenska|íslenska|Ísland
is-IS|Icelandic (Iceland)|Icelandic|Iceland|Latn;|ISL|ISK|0|040f|íslenska (Ísland)|íslenska|Ísland
it|Italian|Italian|Italy|Latn;|ITA|EUR|0|0410|italiano|italiano|Italia
it-CH|Italian (Switzerland)|Italian|Switzerland|Latn;|CHE|CHF|0|0810|italiano (Svizzera)|italiano|Svizzera
it-IT|Italian (Italy)|Italian|Italy|Latn;|ITA|EUR|0|0410|italiano (Italia)|italiano|Italia
it-SM|Italian (San Marino)|Italian|San Marino|Latn;|SMR|EUR|0|1000|italiano (San Marino)|italiano|San Marino
it-VA|Italian (Vatican City)|Italian|Vatican City|Latn;|VAT|EUR|0|1000|italiano (Città del Vaticano)|italiano|Città del Vaticano
iu|Inuktitut|Inuktitut|Canada|Latn;|CAN|CAD|0|085d|Inuktitut|Inuktitut|Kanata
iu-Cans|Inuktitut (Syllabics)|Inuktitut (Syllabics)|Canada|Cans;|CAN|CAD|0|045d|ᐃᓄᒃᑎᑐᑦ (ᖃᓂᐅᔮᖅᐸᐃᑦ)|ᐃᓄᒃᑎᑐᑦ|ᑲᓇᑕ
iu-Cans-CA|Inuktitut (Syllabics, Canada)|Inuktitut (Syllabics)|Canada|Cans;|CAN|CAD|0|045d|ᐃᓄᒃᑎᑐᑦ (ᑲᓇᑕᒥ)|ᐃᓄᒃᑎᑐᑦ|ᑲᓇᑕ
iu-Latn|Inuktitut (Latin)|Inuktitut (Latin)|Canada|Latn;|CAN|CAD|0|085d|Inuktitut (Qaliujaaqpait)|Inuktitut|Kanata
iu-Latn-CA|Inuktitut (Latin, Canada)|Inuktitut (Latin)|Canada|Latn;|CAN|CAD|0|085d|Inuktitut (Kanatami)|Inuktitut|Kanata
ja|Japanese|Japanese|Japan|Hani;Hira;Jpan;Kana;|JPN|JPY|2|0411|日本語|日本語|日本
ja-JP|Japanese (Japan)|Japanese|Japan|Hani;Hira;Jpan;Kana;|JPN|JPY|2|0411|日本語 (日本)|日本語|日本
jgo|Ngomba|Ngomba|Cameroon|Latn;|CMR|XAF|0|1000|Ndaa|Ndaa|Kamɛlûn
jgo-CM|Ngomba (Cameroon)|Ngomba|Cameroon|Latn;|CMR|XAF|0|1000|Ndaa (Kamɛlûn)|Ndaa|Kamɛlûn
jmc|Machame|Machame|Tanzania|Latn;|TZA|TZS|0|1000|Kimachame|Kimachame|Tanzania
jmc-TZ|Machame (Tanzania)|Machame|Tanzania|Latn;|TZA|TZS|0|1000|Kimachame (Tanzania)|Kimachame|Tanzania
jv|Javanese|Javanese|Indonesia|Latn;|IDN|IDR|0|1000|Basa Jawa|Basa Jawa|Indonesia
jv-Java|Javanese (Javanese)|Javanese (Javanese)|Indonesia|Java;|IDN|IDR|0|1000|ꦧꦱꦗꦮ|ꦧꦱꦗꦮ|Indonésia
jv-Java-ID|Javanese (Javanese, Indonesia)|Javanese (Javanese)|Indonesia|Java;|IDN|IDR|0|1000|ꦧꦱꦗꦮ (Indonésia)|ꦧꦱꦗꦮ|Indonésia
jv-Latn|Javanese|Javanese|Indonesia|Latn;|IDN|IDR|0|1000|Basa Jawa|Basa Jawa|Indonesia
jv-Latn-ID|Javanese (Indonesia)|Javanese|Indonesia|Latn;|IDN|IDR|0|1000|Basa Jawa (Indonesia)|Basa Jawa|Indonesia
ka|Georgian|Georgian|Georgia|Geor;|GEO|GEL|0|0437|ქართული|ქართული|საქართველო
ka-GE|Georgian (Georgia)|Georgian|Georgia|Geor;|GEO|GEL|0|0437|ქართული (საქართველო)|ქართული|საქართველო
kab|Kabyle|Kabyle|Algeria|Latn;|DZA|DZD|0|1000|Taqbaylit|Taqbaylit|Lezzayer
kab-DZ|Kabyle (Algeria)|Kabyle|Algeria|Latn;|DZA|DZD|0|1000|Taqbaylit (Lezzayer)|Taqbaylit|Lezzayer
kam|Kamba|Kamba|Kenya|Latn;|KEN|KES|0|1000|Kikamba|Kikamba|Kenya
kam-KE|Kamba (Kenya)|Kamba|Kenya|Latn;|KEN|KES|0|1000|Kikamba (Kenya)|Kikamba|Kenya
kde|Makonde|Makonde|Tanzania|Latn;|TZA|TZS|0|1000|Chimakonde|Chimakonde|Tanzania
kde-TZ|Makonde (Tanzania)|Makonde|Tanzania|Latn;|TZA|TZS|0|1000|Chimakonde (Tanzania)|Chimakonde|Tanzania
kea|Kabuverdianu|Kabuverdianu|Cabo Verde|Latn;|CPV|CVE|0|1000|kabuverdianu|kabuverdianu|Kabu Verdi
kea-CV|Kabuverdianu (Cabo Verde)|Kabuverdianu|Cabo Verde|Latn;|CPV|CVE|0|1000|kabuverdianu (Kabu Verdi)|kabuverdianu|Kabu Verdi
khq|Koyra Chiini|Koyra Chiini|Mali|Latn;|MLI|XOF|0|1000|Koyra ciini|Koyra ciini|Maali
khq-ML|Koyra Chiini (Mali)|Koyra Chiini|Mali|Latn;|MLI|XOF|0|1000|Koyra ciini (Maali)|Koyra ciini|Maali
ki|Kikuyu|Kikuyu|Kenya|Latn;|KEN|KES|0|1000|Gikuyu|Gikuyu|Kenya
ki-KE|Kikuyu (Kenya)|Kikuyu|Kenya|Latn;|KEN|KES|0|1000|Gikuyu (Kenya)|Gikuyu|Kenya
kk|Kazakh|Kazakh|Kazakhstan|Cyrl;|KAZ|KZT|0|043f|қазақ тілі|қазақ тілі|Қазақстан
kk-KZ|Kazakh (Kazakhstan)|Kazakh|Kazakhstan|Cyrl;|KAZ|KZT|0|043f|қазақ тілі (Қазақстан)|қазақ тілі|Қазақстан
kkj|Kako|Kako|Cameroon|Latn;|CMR|XAF|0|1000|kakɔ|kakɔ|Kamɛrun
kkj-CM|Kako (Cameroon)|Kako|Cameroon|Latn;|CMR|XAF|0|1000|kakɔ (Kamɛrun)|kakɔ|Kamɛrun
kl|Kalaallisut|Kalaallisut|Greenland|Latn;|GRL|DKK|0|046f|kalaallisut|kalaallisut|Kalaallit Nunaat
kl-GL|Kalaallisut (Greenland)|Kalaallisut|Greenland|Latn;|GRL|DKK|0|046f|kalaallisut (Kalaallit Nunaat)|kalaallisut|Kalaallit Nunaat
kln|Kalenjin|Kalenjin|Kenya|Latn;|KEN|KES|0|1000|Kalenjin|Kalenjin|Emetab Kenya
kln-KE|Kalenjin (Kenya)|Kalenjin|Kenya|Latn;|KEN|KES|0|1000|Kalenjin (Emetab Kenya)|Kalenjin|Emetab Kenya
km|Khmer|Khmer|Cambodia|Khmr;|KHM|KHR|0|0453|ខ្មែរ|ខ្មែរ|កម្ពុជា
km-KH|Khmer (Cambodia)|Khmer|Cambodia|Khmr;|KHM|KHR|0|0453|ខ្មែរ (កម្ពុជា)|ខ្មែរ|កម្ពុជា
kn|Kannada|Kannada|India|Knda;|IND|INR|0|044b|ಕನ್ನಡ|ಕನ್ನಡ|ಭಾರತ
kn-IN|Kannada (India)|Kannada|India|Knda;|IND|INR|0|044b|ಕನ್ನಡ (ಭಾರತ)|ಕನ್ನಡ|ಭಾರತ
ko|Korean|Korean|Korea|Hang;Hani;Kore;|KOR|KRW|2|0412|한국어|한국어|대한민국
ko-KP|Korean (North Korea)|Korean|North Korea|Kore;|PRK|KPW|0|1000|한국어 (조선민주주의인민공화국)|한국어|조선민주주의인민공화국
ko-KR|Korean (Korea)|Korean|Korea|Hang;Hani;Kore;|KOR|KRW|2|0412|한국어(대한민국)|한국어|대한민국
kok|Konkani|Konkani|India|Deva;|IND|INR|0|0457|कोंकणी|कोंकणी|भारत
kok-IN|Konkani (India)|Konkani|India|Deva;|IND|INR|0|0457|कोंकणी (भारत)|कोंकणी|भारत
kr|Kanuri|Kanuri|Nigeria|Latn;|NGA|NGN|0|0471|Kanuri|Kanuri|Nigeria
kr-Latn|Kanuri (Latin)|Kanuri (Latin)|Nigeria|Latn;|NGA|NGN|0|0471|Kanuri|Kanuri|Nigeria
kr-Latn-NG|Kanuri (Latin, Nigeria)|Kanuri (Latin)|Nigeria|Latn;|NGA|NGN|0|0471|Kanuri (Nigeria)|Kanuri|Nigeria
ks|Kashmiri|Kashmiri|India|Arab;|IND|INR|1|1000|کٲشُر|کٲشُر|ہِندوستان
ks-Arab|Kashmiri (Arabic)|Kashmiri (Arabic)|India|Arab;|IND|INR|1|1000|کٲشُر (اَربی)|کٲشُر|ہِندوستان
ks-Arab-IN|Kashmiri (Arabic)|Kashmiri (Arabic)|India|Arab;|IND|INR|1|1000|کٲشُر (اَربی)|کٲشُر|ہِندوستان
ks-Deva|Kashmiri (Devanagari)|Kashmiri (Devanagari)|India|Deva;|IND|INR|0|0860|कॉशुर|कॉशुर|India
ks-Deva-IN|Kashmiri (Devanagari)|Kashmiri (Devanagari)|India|Deva;|IND|INR|0|0860|कॉशुर (India)|कॉशुर|India
ksb|Shambala|Shambala|Tanzania|Latn;|TZA|TZS|0|1000|Kishambaa|Kishambaa|Tanzania
ksb-TZ|Shambala (Tanzania)|Shambala|Tanzania|Latn;|TZA|TZS|0|1000|Kishambaa (Tanzania)|Kishambaa|Tanzania
ksf|Bafia|Bafia|Cameroon|Latn;|CMR|XAF|0|1000|rikpa|rikpa|kamɛrún
ksf-CM|Bafia (Cameroon)|Bafia|Cameroon|Latn;|CMR|XAF|0|1000|rikpa (kamɛrún)|rikpa|kamɛrún
ksh|Colognian|Colognian|Germany|Latn;|DEU|EUR|0|1000|Kölsch|Kölsch|Doütschland
ksh-DE|Colognian (Germany)|Colognian|Germany|Latn;|DEU|EUR|0|1000|Kölsch (Doütschland)|Kölsch|Doütschland
ku|Central Kurdish|Central Kurdish|Iraq|Arab;|IRQ|IQD|1|0492|کوردیی ناوەڕاست|کوردیی ناوەڕاست|عێراق
ku-Arab|Central Kurdish|Central Kurdish|Iraq|Arab;|IRQ|IQD|1|0492|کوردیی ناوەڕاست|کوردیی ناوەڕاست|عێراق
ku-Arab-IQ|Central Kurdish (Iraq)|Central Kurdish|Iraq|Arab;|IRQ|IQD|1|0492|کوردیی ناوەڕاست (عێراق)|کوردیی ناوەڕاست|عێراق
ku-Arab-IR|Kurdish (Arabic, Iran)|Kurdish (Arabic)|Iran|Arab;|IRN|IRR|1|1000|کوردی (ئێران)|کوردی|ئێران
kw|Cornish|Cornish|United Kingdom|Latn;|GBR|GBP|0|1000|kernewek|kernewek|Rywvaneth Unys
kw-GB|Cornish (United Kingdom)|Cornish|United Kingdom|Latn;|GBR|GBP|0|1000|kernewek (Rywvaneth Unys)|kernewek|Rywvaneth Unys
ky|Kyrgyz|Kyrgyz|Kyrgyzstan|Cyrl;|KGZ|KGS|0|0440|кыргызча|кыргызча|Кыргызстан
ky-KG|Kyrgyz (Kyrgyzstan)|Kyrgyz|Kyrgyzstan|Cyrl;|KGZ|KGS|0|0440|кыргызча (Кыргызстан)|кыргызча|Кыргызстан
la|Latin|Latin|Vatican City|Latn;|VAT|EUR|0|0476|Latina|Latina|Civitas Vaticana
la-VA|Latin (Vatican City)|Latin|Vatican City|Latn;|VAT|EUR|0|0476|Latina (Civitas Vaticana)|Latina|Civitas Vaticana
lag|Langi|Langi|Tanzania|Latn;|TZA|TZS|0|1000|Kɨlaangi|Kɨlaangi|Taansanía
lag-TZ|Langi (Tanzania)|Langi|Tanzania|Latn;|TZA|TZS|0|1000|Kɨlaangi (Taansanía)|Kɨlaangi|Taansanía
lb|Luxembourgish|Luxembourgish|Luxembourg|Latn;|LUX|EUR|0|046e|Lëtzebuergesch|Lëtzebuergesch|Lëtzebuerg
lb-LU|Luxembourgish (Luxembourg)|Luxembourgish|Luxembourg|Latn;|LUX|EUR|0|046e|Lëtzebuergesch (Lëtzebuerg)|Lëtzebuergesch|Lëtzebuerg
lg|Ganda|Ganda|Uganda|Latn;|UGA|UGX|0|1000|Luganda|Luganda|Yuganda
lg-UG|Ganda (Uganda)|Ganda|Uganda|Latn;|UGA|UGX|0|1000|Luganda (Yuganda)|Luganda|Yuganda
lkt|Lakota|Lakota|United States|Latn;|USA|USD|0|1000|Lakȟólʼiyapi|Lakȟólʼiyapi|Mílahaŋska Tȟamákȟočhe
lkt-US|Lakota (United States)|Lakota|United States|Latn;|USA|USD|0|1000|Lakȟólʼiyapi (Mílahaŋska Tȟamákȟočhe)|Lakȟólʼiyapi|Mílahaŋska Tȟamákȟočhe
ln|Lingala|Lingala|Congo (DRC)|Latn;|COD|CDF|0|1000|lingála|lingála|Republíki ya Kongó Demokratíki
ln-AO|Lingala (Angola)|Lingala|Angola|Latn;|AGO|AOA|0|1000|lingála (Angóla)|lingála|Angóla
ln-CD|Lingala (Congo DRC)|Lingala|Congo (DRC)|Latn;|COD|CDF|0|1000|lingála (Republíki ya Kongó Demokratíki)|lingála|Republíki ya Kongó Demokratíki
ln-CF|Lingala (Central African Republic)|Lingala|Central African Republic|Latn;|CAF|XAF|0|1000|lingála (Repibiki ya Afríka ya Káti)|lingála|Repibiki ya Afríka ya Káti
ln-CG|Lingala (Congo)|Lingala|Congo|Latn;|COG|XAF|0|1000|lingála (Kongo)|lingála|Kongo
lo|Lao|Lao|Laos|Laoo;|LAO|LAK|0|0454|ລາວ|ລາວ|ລາວ
lo-LA|Lao (Laos)|Lao|Laos|Laoo;|LAO|LAK|0|0454|ລາວ (ລາວ)|ລາວ|ລາວ
lrc|Northern Luri|Northern Luri|Iran|Arab;|IRN|IRR|1|1000|لۊری شومالی|لۊری شومالی|Iran
lrc-IQ|Northern Luri (Iraq)|Northern Luri|Iraq|Arab;|IRQ|IQD|1|1000|لۊری شومالی (Iraq)|لۊری شومالی|Iraq
lrc-IR|Northern Luri (Iran)|Northern Luri|Iran|Arab;|IRN|IRR|1|1000|لۊری شومالی (Iran)|لۊری شومالی|Iran
lt|Lithuanian|Lithuanian|Lithuania|Latn;|LTU|EUR|0|0427|lietuvių|lietuvių|Lietuva
lt-LT|Lithuanian (Lithuania)|Lithuanian|Lithuania|Latn;|LTU|EUR|0|0427|lietuvių (Lietuva)|lietuvių|Lietuva
lu|Luba-Katanga|Luba-Katanga|Congo (DRC)|Latn;|COD|CDF|0|1000|Tshiluba|Tshiluba|Ditunga wa Kongu
lu-CD|Luba-Katanga (Congo DRC)|Luba-Katanga|Congo (DRC)|Latn;|COD|CDF|0|1000|Tshiluba (Ditunga wa Kongu)|Tshiluba|Ditunga wa Kongu
luo|Luo|Luo|Kenya|Latn;|KEN|KES|0|1000|Dholuo|Dholuo|Kenya
luo-KE|Luo (Kenya)|Luo|Kenya|Latn;|KEN|KES|0|1000|Dholuo (Kenya)|Dholuo|Kenya
luy|Luyia|Luyia|Kenya|Latn;|KEN|KES|0|1000|Luluhia|Luluhia|Kenya
luy-KE|Luyia (Kenya)|Luyia|Kenya|Latn;|KEN|KES|0|1000|Luluhia (Kenya)|Luluhia|Kenya
lv|Latvian|Latvian|Latvia|Latn;|LVA|EUR|0|0426|latviešu|latviešu|Latvija
lv-LV|Latvian (Latvia)|Latvian|Latvia|Latn;|LVA|EUR|0|0426|latviešu (Latvija)|latviešu|Latvija
mai|Maithili|Maithili|India|Deva;|IND|INR|0|1000|मैथिली|मैथिली|भारत
mai-IN|Maithili (India)|Maithili|India|Deva;|IND|INR|0|1000|मैथिली (भारत)|मैथिली|भारत
mas|Masai|Masai|Kenya|Latn;|KEN|KES|0|1000|Maa|Maa|Kenya
mas-KE|Masai (Kenya)|Masai|Kenya|Latn;|KEN|KES|0|1000|Maa (Kenya)|Maa|Kenya
mas-TZ|Masai (Tanzania)|Masai|Tanzania|Latn;|TZA|TZS|0|1000|Maa (Tansania)|Maa|Tansania
mer|Meru|Meru|Kenya|Latn;|KEN|KES|0|1000|Kĩmĩrũ|Kĩmĩrũ|Kenya
mer-KE|Meru (Kenya)|Meru|Kenya|Latn;|KEN|KES|0|1000|Kĩmĩrũ (Kenya)|Kĩmĩrũ|Kenya
mfe|Morisyen|Morisyen|Mauritius|Latn;|MUS|MUR|0|1000|kreol morisien|kreol morisien|Moris
mfe-MU|Morisyen (Mauritius)|Morisyen|Mauritius|Latn;|MUS|MUR|0|1000|kreol morisien (Moris)|kreol morisien|Moris
mg|Malagasy|Malagasy|Madagascar|Latn;|MDG|MGA|0|1000|Malagasy|Malagasy|Madagasikara
mg-MG|Malagasy (Madagascar)|Malagasy|Madagascar|Latn;|MDG|MGA|0|1000|Malagasy (Madagasikara)|Malagasy|Madagasikara
mgh|Makhuwa-Meetto|Makhuwa-Meetto|Mozambique|Latn;|MOZ|MZN|0|1000|Makua|Makua|Umozambiki
mgh-MZ|Makhuwa-Meetto (Mozambique)|Makhuwa-Meetto|Mozambique|Latn;|MOZ|MZN|0|1000|Makua (Umozambiki)|Makua|Umozambiki
mgo|Metaʼ|Metaʼ|Cameroon|Latn;|CMR|XAF|0|1000|metaʼ|metaʼ|Kamalun
mgo-CM|Metaʼ (Cameroon)|Metaʼ|Cameroon|Latn;|CMR|XAF|0|1000|metaʼ (Kamalun)|metaʼ|Kamalun
mi|Maori|Maori|New Zealand|Latn;|NZL|NZD|0|0481|te reo Māori|te reo Māori|Aotearoa
mi-NZ|Maori (New Zealand)|Maori|New Zealand|Latn;|NZL|NZD|0|0481|te reo Māori (Aotearoa)|te reo Māori|Aotearoa
mk|Macedonian|Macedonian|North Macedonia|Cyrl;|MKD|MKD|0|042f|македонски|македонски|Северна Македонија
mk-MK|Macedonian (North Macedonia)|Macedonian|North Macedonia|Cyrl;|MKD|MKD|0|042f|македонски (Северна Македонија)|македонски|Северна Македонија
ml|Malayalam|Malayalam|India|Mlym;|IND|INR|0|044c|മലയാളം|മലയാളം|ഇന്ത്യ
ml-IN|Malayalam (India)|Malayalam|India|Mlym;|IND|INR|0|044c|മലയാളം (ഇന്ത്യ)|മലയാളം|ഇന്ത്യ
mn|Mongolian|Mongolian|Mongolia|Cyrl;|MNG|MNT|0|0450|Монгол хэл|монгол|Монгол
mn-Cyrl|Mongolian|Mongolian|Mongolia|Cyrl;|MNG|MNT|0|0450|Монгол хэл (Кирилл үсэг)|монгол|Монгол
mn-MN|Mongolian (Mongolia)|Mongolian|Mongolia|Cyrl;|MNG|MNT|0|0450|монгол (Монгол)|монгол|Монгол
mn-Mong|Mongolian (Traditional Mongolian)|Mongolian (Traditional Mongolian)|China|Mong;|CHN|CNY|3|0850|ᠮᠣᠩᠭᠣᠤᠯ ᠬᠡᠯᠡ (ᠮᠣᠩᠭᠣᠤᠯ ᠬᠡᠯᠡ)|ᠮᠣᠩᠭᠣᠤᠯ ᠬᠡᠯᠡ|ᠪᠦᠭᠦᠳᠡ ᠨᠠᠢᠷᠠᠮᠳᠠᠬᠤ ᠳᠤᠮᠳᠠᠳᠤ ᠠᠷᠠᠳ ᠣᠯᠣᠰ
mn-Mong-CN|Mongolian (Traditional Mongolian, China)|Mongolian (Traditional Mongolian)|China|Mong;|CHN|CNY|3|0850|ᠮᠣᠩᠭᠣᠤᠯ ᠬᠡᠯᠡ (ᠪᠦᠭᠦᠳᠡ ᠨᠠᠢᠷᠠᠮᠳᠠᠬᠤ ᠳᠤᠮᠳᠠᠳᠤ ᠠᠷᠠᠳ ᠣᠯᠣᠰ)|ᠮᠣᠩᠭᠣᠤᠯ ᠬᠡᠯᠡ|ᠪᠦᠭᠦᠳᠡ ᠨᠠᠢᠷᠠᠮᠳᠠᠬᠤ ᠳᠤᠮᠳᠠᠳᠤ ᠠᠷᠠᠳ ᠣᠯᠣᠰ
mn-Mong-MN|Mongolian (Traditional Mongolian, Mongolia)|Mongolian (Traditional Mongolian)|Mongolia|Mong;|MNG|MNT|3|0c50|ᠮᠣᠩᠭᠣᠯ ᠬᠡᠯᠡ (ᠮᠣᠩᠭᠣᠯ ᠣᠯᠣᠰ)|ᠮᠣᠩᠭᠣᠯ ᠬᠡᠯᠡ|ᠮᠣᠩᠭᠣᠯ ᠣᠯᠣᠰ
mni|Manipuri|Manipuri|India|Beng;|IND|INR|0|0458|মৈতৈলোন্|মৈতৈলোন্|ইন্দিয়া
mni-Beng|Manipuri (Bangla)|Manipuri (Bangla)|India|Beng;|IND|INR|0|0458|মৈতৈলোন্|মৈতৈলোন্|ইন্দিয়া
mni-IN|Manipuri (Bangla, India)|Manipuri (Bangla)|India|Beng;|IND|INR|0|0458|মৈতৈলোন্ (ইন্দিয়া)|মৈতৈলোন্|ইন্দিয়া
moh|Mohawk|Mohawk|Canada|Latn;|CAN|CAD|0|047c|Kanienʼkéha|Kanienʼkéha|Canada
moh-CA|Mohawk (Canada)|Mohawk|Canada|Latn;|CAN|CAD|0|047c|Kanienʼkéha (Canada)|Kanienkéha|Canada
mr|Marathi|Marathi|India|Deva;|IND|INR|0|044e|मराठी|मराठी|भारत
mr-IN|Marathi (India)|Marathi|India|Deva;|IND|INR|0|044e|मराठी (भारत)|मराठी|भारत
ms|Malay|Malay|Malaysia|Latn;|MYS|MYR|0|043e|Melayu|Melayu|Malaysia
ms-BN|Malay (Brunei)|Malay|Brunei|Latn;|BRN|BND|0|083e|Melayu (Brunei)|Melayu|Brunei
ms-ID|Malay (Indonesia)|Malay|Indonesia|Latn;|IDN|IDR|0|1000|Melayu (Indonesia)|Melayu|Indonesia
ms-MY|Malay (Malaysia)|Malay|Malaysia|Latn;|MYS|MYR|0|043e|Melayu (Malaysia)|Melayu|Malaysia
ms-SG|Malay (Singapore)|Malay|Singapore|Latn;|SGP|SGD|0|1000|Melayu (Singapura)|Melayu|Singapura
mt|Maltese|Maltese|Malta|Latn;|MLT|EUR|0|043a|Malti|Malti|Malta
mt-MT|Maltese (Malta)|Maltese|Malta|Latn;|MLT|EUR|0|043a|Malti (Malta)|Malti|Malta
mua|Mundang|Mundang|Cameroon|Latn;|CMR|XAF|0|1000|MUNDAŊ|MUNDAŊ|kameruŋ
mua-CM|Mundang (Cameroon)|Mundang|Cameroon|Latn;|CMR|XAF|0|1000|MUNDAŊ (kameruŋ)|MUNDAŊ|kameruŋ
my|Burmese|Burmese|Myanmar|Mymr;|MMR|MMK|0|0455|ဗမာ|ဗမာ|မြန်မာ
my-MM|Burmese (Myanmar)|Burmese|Myanmar|Mymr;|MMR|MMK|0|0455|မြန်မာ (မြန်မာ)|မြန်မာ|မြန်မာ
mzn|Mazanderani|Mazanderani|Iran|Arab;|IRN|IRR|1|1000|مازرونی|مازرونی|ایران
mzn-IR|Mazanderani (Iran)|Mazanderani|Iran|Arab;|IRN|IRR|1|1000|مازرونی (ایران)|مازرونی|ایران
naq|Nama|Nama|Namibia|Latn;|NAM|NAD|0|1000|Khoekhoegowab|Khoekhoegowab|Namibiab
naq-NA|Nama (Namibia)|Nama|Namibia|Latn;|NAM|NAD|0|1000|Khoekhoegowab (Namibiab)|Khoekhoegowab|Namibiab
nb|Norwegian Bokmål|Norwegian Bokmål|Norway|Latn;|NOR|NOK|0|0414|norsk bokmål|norsk bokmål|Norge
nb-NO|Norwegian Bokmål (Norway)|Norwegian Bokmål|Norway|Latn;|NOR|NOK|0|0414|norsk bokmål (Norge)|norsk bokmål|Norge
nb-SJ|Norwegian Bokmål (Svalbard & Jan Mayen)|Norwegian Bokmål|Svalbard & Jan Mayen|Latn;|SJM|NOK|0|1000|norsk bokmål (Svalbard og Jan Mayen)|norsk bokmål|Svalbard og Jan Mayen
nd|North Ndebele|North Ndebele|Zimbabwe|Latn;|ZWE|USD|0|1000|isiNdebele|isiNdebele|Zimbabwe
nd-ZW|North Ndebele (Zimbabwe)|North Ndebele|Zimbabwe|Latn;|ZWE|USD|0|1000|isiNdebele (Zimbabwe)|isiNdebele|Zimbabwe
nds|Low German|Low German|Germany|Latn;|DEU|EUR|0|1000|Neddersasssch|Neddersasssch|Düütschland
nds-DE|Low German (Germany)|Low German|Germany|Latn;|DEU|EUR|0|1000|Neddersasssch (Düütschland)|Neddersasssch|Düütschland
nds-NL|Low German (Netherlands)|Low German|Netherlands|Latn;|NLD|EUR|0|1000|Neddersasssch (Nedderlannen)|Neddersasssch|Nedderlannen
ne|Nepali|Nepali|Nepal|Deva;|NPL|NPR|0|0461|नेपाली|नेपाली|नेपाल
ne-IN|Nepali (India)|Nepali|India|Deva;|IND|INR|0|0861|नेपाली (भारत)|नेपाली|भारत
ne-NP|Nepali (Nepal)|Nepali|Nepal|Deva;|NPL|NPR|0|0461|नेपाली (नेपाल)|नेपाली|नेपाल
nl|Dutch|Dutch|Netherlands|Latn;|NLD|EUR|0|0413|Nederlands|Nederlands|Nederland
nl-AW|Dutch (Aruba)|Dutch|Aruba|Latn;|ABW|AWG|0|1000|Nederlands (Aruba)|Nederlands|Aruba
nl-BE|Dutch (Belgium)|Dutch|Belgium|Latn;|BEL|EUR|0|0813|Nederlands (België)|Nederlands|België
nl-BQ|Dutch (Bonaire, Sint Eustatius and Saba)|Dutch|Bonaire, Sint Eustatius and Saba|Latn;|BES|USD|0|1000|Nederlands (Bonaire, Sint Eustatius en Saba)|Nederlands|Bonaire, Sint Eustatius en Saba
nl-CW|Dutch (Curaçao)|Dutch|Curaçao|Latn;|CUW|ANG|0|1000|Nederlands (Curaçao)|Nederlands|Curaçao
nl-NL|Dutch (Netherlands)|Dutch|Netherlands|Latn;|NLD|EUR|0|0413|Nederlands (Nederland)|Nederlands|Nederland
nl-SR|Dutch (Suriname)|Dutch|Suriname|Latn;|SUR|SRD|0|1000|Nederlands (Suriname)|Nederlands|Suriname
nl-SX|Dutch (Sint Maarten)|Dutch|Sint Maarten|Latn;|SXM|ANG|0|1000|Nederlands (Sint-Maarten)|Nederlands|Sint-Maarten
nmg|Kwasio|Kwasio|Cameroon|Latn;|CMR|XAF|0|1000|Kwasio|Kwasio|Kamerun
nmg-CM|Kwasio (Cameroon)|Kwasio|Cameroon|Latn;|CMR|XAF|0|1000|Kwasio (Kamerun)|Kwasio|Kamerun
nn|Norwegian Nynorsk|Norwegian Nynorsk|Norway|Latn;|NOR|NOK|0|0814|norsk nynorsk|norsk nynorsk|Noreg
nn-NO|Norwegian Nynorsk (Norway)|Norwegian Nynorsk|Norway|Latn;|NOR|NOK|0|0814|norsk nynorsk (Noreg)|norsk nynorsk|Noreg
nnh|Ngiemboon|Ngiemboon|Cameroon|Latn;|CMR|XAF|0|1000|Shwóŋò ngiembɔɔn|Shwóŋò ngiembɔɔn|Kàmalûm
nnh-CM|Ngiemboon (Cameroon)|Ngiemboon|Cameroon|Latn;|CMR|XAF|0|1000|Shwóŋò ngiembɔɔn (Kàmalûm)|Shwóŋò ngiembɔɔn|Kàmalûm
no|Norwegian|Norwegian|Norway|Latn;|NOR|NOK|0|0414|norsk|norsk|Norge
nqo|N'ko|N'ko|Guinea|Nkoo;|GIN|GNF|1|1000|ߒߞߏ|ߒߞߏ|ߖߌ߬ߣߍ߬ ߞߊ߲ߓߍ߲
nqo-GN|N'ko (Guinea)|N'ko|Guinea|Nkoo;|GIN|GNF|1|1000|ߒߞߏ (ߖߌ߬ߣߍ߬ ߞߊ߲ߓߍ߲)|ߒߞߏ|ߖߌ߬ߣߍ߬ ߞߊ߲ߓߍ߲
nr|South Ndebele|South Ndebele|South Africa|Latn;|ZAF|ZAR|0|1000|isiNdebele|isiNdebele|South Africa
nr-ZA|South Ndebele (South Africa)|South Ndebele|South Africa|Latn;|ZAF|ZAR|0|1000|isiNdebele (South Africa)|isiNdebele|South Africa
nso|Sesotho sa Leboa|Sesotho sa Leboa|South Africa|Latn;|ZAF|ZAR|0|046c|Sesotho sa Leboa|Sesotho sa Leboa|Afrika Borwa
nso-ZA|Sesotho sa Leboa (South Africa)|Sesotho sa Leboa|South Africa|Latn;|ZAF|ZAR|0|046c|Sesotho sa Leboa (Afrika Borwa)|Sesotho sa Leboa|Afrika Borwa
nus|Nuer|Nuer|South Sudan|Latn;|SSD|SSP|0|1000|Thok Nath|Thok Nath|South Sudan
nus-SS|Nuer (South Sudan)|Nuer|South Sudan|Latn;|SSD|SSP|0|1000|Thok Nath (South Sudan)|Thok Nath|South Sudan
nyn|Nyankole|Nyankole|Uganda|Latn;|UGA|UGX|0|1000|Runyankore|Runyankore|Uganda
nyn-UG|Nyankole (Uganda)|Nyankole|Uganda|Latn;|UGA|UGX|0|1000|Runyankore (Uganda)|Runyankore|Uganda
oc|Occitan|Occitan|France|Latn;|FRA|EUR|0|0482|occitan|occitan|França
oc-FR|Occitan (France)|Occitan|France|Latn;|FRA|EUR|0|0482|occitan (França)|occitan|França
om|Oromo|Oromo|Ethiopia|Latn;|ETH|ETB|0|0472|Oromoo|Oromoo|Itoophiyaa
om-ET|Oromo (Ethiopia)|Oromo|Ethiopia|Latn;|ETH|ETB|0|0472|Oromoo (Itoophiyaa)|Oromoo|Itoophiyaa
om-KE|Oromo (Kenya)|Oromo|Kenya|Latn;|KEN|KES|0|1000|Oromoo (Keeniyaa)|Oromoo|Keeniyaa
or|Odia|Odia|India|Orya;|IND|INR|0|0448|ଓଡ଼ିଆ|ଓଡ଼ିଆ|ଭାରତ
or-IN|Odia (India)|Odia|India|Orya;|IND|INR|0|0448|ଓଡ଼ିଆ (ଭାରତ)|ଓଡ଼ିଆ|ଭାରତ
os|Ossetic|Ossetic|Georgia|Cyrl;|GEO|GEL|0|1000|ирон|ирон|Гуырдзыстон
os-GE|Ossetic (Georgia)|Ossetic|Georgia|Cyrl;|GEO|GEL|0|1000|ирон (Гуырдзыстон)|ирон|Гуырдзыстон
os-RU|Ossetic (Russia)|Ossetic|Russia|Cyrl;|RUS|RUB|0|1000|ирон (Уӕрӕсе)|ирон|Уӕрӕсе
pa|Punjabi|Punjabi|India|Guru;|IND|INR|0|0446|ਪੰਜਾਬੀ|ਪੰਜਾਬੀ|ਭਾਰਤ
pa-Arab|Punjabi|Punjabi|Pakistan|Arab;|PAK|PKR|1|0846|پنجابی|پنجابی|پاکستان
pa-Arab-PK|Punjabi (Pakistan)|Punjabi|Pakistan|Arab;|PAK|PKR|1|0846|پنجابی (پاکستان)|پنجابی|پاکستان
pa-Guru|Punjabi|Punjabi|India|Guru;|IND|INR|0|0446|ਪੰਜਾਬੀ|ਪੰਜਾਬੀ|ਭਾਰਤ
pa-IN|Punjabi (India)|Punjabi|India|Guru;|IND|INR|0|0446|ਪੰਜਾਬੀ (ਭਾਰਤ)|ਪੰਜਾਬੀ|ਭਾਰਤ
pap|Papiamento|Papiamento|Caribbean|Latn;|029|XCD|0|0479|Papiamentu|Papiamentu|Caribbean
pap-029|Papiamento (Caribbean)|Papiamento|Caribbean|Latn;|029|XCD|0|0479|Papiamentu (Caribbean)|Papiamentu|Caribbean
pcm|Nigerian Pidgin|Nigerian Pidgin|Nigeria|Latn;|NGA|NGN|0|1000|Naijíriá Píjin|Naijíriá Píjin|Naijíria
pcm-Latn|Nigerian Pidgin (Latin)|Nigerian Pidgin (Latin)|Nigeria|Latn;|NGA|NGN|0|1000|Naijíriá Píjin (Látin)|Naijíriá Píjin|Naijíria
pcm-Latn-NG|Nigerian Pidgin (Latin, Nigeria)|Nigerian Pidgin (Latin)|Nigeria|Latn;|NGA|NGN|0|1000|Naijíriá Píjin (Naijíria)|Naijíriá Píjin|Naijíria
pl|Polish|Polish|Poland|Latn;|POL|PLN|0|0415|polski|polski|Polska
pl-PL|Polish (Poland)|Polish|Poland|Latn;|POL|PLN|0|0415|polski (Polska)|polski|Polska
prg|Prussian|Prussian|World|Latn;|001|XDR|0|1000|prūsiskan|prūsiskan|swītai
prg-001|Prussian (World)|Prussian|World|Latn;|001|XDR|0|1000|prūsiskan (swītai)|prūsiskan|swītai
ps|Pashto|Pashto|Afghanistan|Arab;|AFG|AFN|1|0463|پښتو|پښتو|افغانستان
ps-AF|Pashto (Afghanistan)|Pashto|Afghanistan|Arab;|AFG|AFN|1|0463|پښتو (افغانستان)|پښتو|افغانستان
ps-PK|Pashto (Pakistan)|Pashto|Pakistan|Arab;|PAK|PKR|1|1000|پښتو (پاکستان)|پښتو|پاکستان
pt|Portuguese|Portuguese|Brazil|Latn;|BRA|BRL|0|0416|português|português|Brasil
pt-AO|Portuguese (Angola)|Portuguese|Angola|Latn;|AGO|AOA|0|1000|português (Angola)|português|Angola
pt-BR|Portuguese (Brazil)|Portuguese|Brazil|Latn;|BRA|BRL|0|0416|português (Brasil)|português|Brasil
pt-CH|Portuguese (Switzerland)|Portuguese|Switzerland|Latn;|CHE|CHF|0|1000|português (Suíça)|português|Suíça
pt-CV|Portuguese (Cabo Verde)|Portuguese|Cabo Verde|Latn;|CPV|CVE|0|1000|português (Cabo Verde)|português|Cabo Verde
pt-GQ|Portuguese (Equatorial Guinea)|Portuguese|Equatorial Guinea|Latn;|GNQ|XAF|0|1000|português (Guiné Equatorial)|português|Guiné Equatorial
pt-GW|Portuguese (Guinea-Bissau)|Portuguese|Guinea-Bissau|Latn;|GNB|XOF|0|1000|português (Guiné-Bissau)|português|Guiné-Bissau
pt-LU|Portuguese (Luxembourg)|Portuguese|Luxembourg|Latn;|LUX|EUR|0|1000|português (Luxemburgo)|português|Luxemburgo
pt-MO|Portuguese (Macao SAR)|Portuguese|Macao SAR|Latn;|MAC|MOP|0|1000|português (RAE de Macau)|português|RAE de Macau
pt-MZ|Portuguese (Mozambique)|Portuguese|Mozambique|Latn;|MOZ|MZN|0|1000|português (Moçambique)|português|Moçambique
pt-PT|Portuguese (Portugal)|Portuguese|Portugal|Latn;|PRT|EUR|0|0816|português (Portugal)|português|Portugal
pt-ST|Portuguese (São Tomé & Príncipe)|Portuguese|São Tomé & Príncipe|Latn;|STP|STN|0|1000|português (São Tomé e Príncipe)|português|São Tomé e Príncipe
pt-TL|Portuguese (Timor-Leste)|Portuguese|Timor-Leste|Latn;|TLS|USD|0|1000|português (Timor-Leste)|português|Timor-Leste
quc|Kʼicheʼ|Kʼicheʼ|Guatemala|Latn;|GTM|GTQ|0|0486|Kʼicheʼ|Kʼicheʼ|Guatemala
quc-Latn|Kʼicheʼ (Latin)|Kʼicheʼ (Latin)|Guatemala|Latn;|GTM|GTQ|0|0486|Kʼicheʼ|Kʼicheʼ|Guatemala
quc-Latn-GT|Kʼicheʼ (Latin, Guatemala)|Kʼicheʼ (Latin)|Guatemala|Latn;|GTM|GTQ|0|0486|Kʼicheʼ (Guatemala)|Kʼicheʼ|Guatemala
quz|Quechua|Quechua|Bolivia|Latn;|BOL|BOB|0|046b|Runasimi|Runasimi|Bolivia
quz-BO|Quechua (Bolivia)|Quechua|Bolivia|Latn;|BOL|BOB|0|046b|Runasimi (Bolivia)|Runasimi|Bolivia
quz-EC|Quechua (Ecuador)|Quechua|Ecuador|Latn;|ECU|USD|0|086b|Runasimi (Ecuador)|Runasimi|Ecuador
quz-PE|Quechua (Peru)|Quechua|Peru|Latn;|PER|PEN|0|0c6b|Runasimi (Perú)|Runasimi|Perú
rm|Romansh|Romansh|Switzerland|Latn;|CHE|CHF|0|0417|rumantsch|rumantsch|Svizra
rm-CH|Romansh (Switzerland)|Romansh|Switzerland|Latn;|CHE|CHF|0|0417|rumantsch (Svizra)|rumantsch|Svizra
rn|Rundi|Rundi|Burundi|Latn;|BDI|BIF|0|1000|Ikirundi|Ikirundi|Uburundi
rn-BI|Rundi (Burundi)|Rundi|Burundi|Latn;|BDI|BIF|0|1000|Ikirundi (Uburundi)|Ikirundi|Uburundi
ro|Romanian|Romanian|Romania|Latn;|ROU|RON|0|0418|română|română|România
ro-MD|Romanian (Moldova)|Romanian|Moldova|Latn;|MDA|MDL|0|0818|română (Republica Moldova)|română|Republica Moldova
ro-RO|Romanian (Romania)|Romanian|Romania|Latn;|ROU|RON|0|0418|română (România)|română|România
rof|Rombo|Rombo|Tanzania|Latn;|TZA|TZS|0|1000|Kihorombo|Kihorombo|Tanzania
rof-TZ|Rombo (Tanzania)|Rombo|Tanzania|Latn;|TZA|TZS|0|1000|Kihorombo (Tanzania)|Kihorombo|Tanzania
ru|Russian|Russian|Russia|Cyrl;|RUS|RUB|0|0419|русский|русский|Россия
ru-BY|Russian (Belarus)|Russian|Belarus|Cyrl;|BLR|BYN|0|1000|русский (Беларусь)|русский|Беларусь
ru-KG|Russian (Kyrgyzstan)|Russian|Kyrgyzstan|Cyrl;|KGZ|KGS|0|1000|русский (Киргизия)|русский|Киргизия
ru-KZ|Russian (Kazakhstan)|Russian|Kazakhstan|Cyrl;|KAZ|KZT|0|1000|русский (Казахстан)|русский|Казахстан
ru-MD|Russian (Moldova)|Russian|Moldova|Cyrl;|MDA|MDL|0|0819|русский (Молдова)|русский|Молдова
ru-RU|Russian (Russia)|Russian|Russia|Cyrl;|RUS|RUB|0|0419|русский (Россия)|русский|Россия
ru-UA|Russian (Ukraine)|Russian|Ukraine|Cyrl;|UKR|UAH|0|1000|русский (Украина)|русский|Украина
rw|Kinyarwanda|Kinyarwanda|Rwanda|Latn;|RWA|RWF|0|0487|Kinyarwanda|Kinyarwanda|U Rwanda
rw-RW|Kinyarwanda (Rwanda)|Kinyarwanda|Rwanda|Latn;|RWA|RWF|0|0487|Kinyarwanda (U Rwanda)|Kinyarwanda|U Rwanda
rwk|Rwa|Rwa|Tanzania|Latn;|TZA|TZS|0|1000|Kiruwa|Kiruwa|Tanzania
rwk-TZ|Rwa (Tanzania)|Rwa|Tanzania|Latn;|TZA|TZS|0|1000|Kiruwa (Tanzania)|Kiruwa|Tanzania
sa|Sanskrit|Sanskrit|India|Deva;|IND|INR|0|044f|संस्कृत भाषा|संस्कृत भाषा|भारतः
sa-IN|Sanskrit (India)|Sanskrit|India|Deva;|IND|INR|0|044f|संस्कृत भाषा (भारतः)|संस्कृत भाषा|भारतः
sah|Sakha|Sakha|Russia|Cyrl;|RUS|RUB|0|0485|саха тыла|саха тыла|Арассыыйа
sah-RU|Sakha (Russia)|Sakha|Russia|Cyrl;|RUS|RUB|0|0485|саха тыла (Арассыыйа)|саха тыла|Арассыыйа
saq|Samburu|Samburu|Kenya|Latn;|KEN|KES|0|1000|Kisampur|Kisampur|Kenya
saq-KE|Samburu (Kenya)|Samburu|Kenya|Latn;|KEN|KES|0|1000|Kisampur (Kenya)|Kisampur|Kenya
sat|Santali|Santali|India|Olck;|IND|INR|0|1000|ᱥᱟᱱᱛᱟᱲᱤ|ᱥᱟᱱᱛᱟᱲᱤ|ᱤᱱᱰᱤᱭᱟ
sat-Olck|Santali (Ol Chiki)|Santali (Ol Chiki)|India|Olck;|IND|INR|0|1000|ᱥᱟᱱᱛᱟᱲᱤ (ᱚᱞ ᱪᱤᱠᱤ)|ᱥᱟᱱᱛᱟᱲᱤ|ᱤᱱᱰᱤᱭᱟ
sat-Olck-IN|Santali (Ol Chiki, India)|Santali (Ol Chiki)|India|Olck;|IND|INR|0|1000|ᱥᱟᱱᱛᱟᱲᱤ (ᱤᱱᱰᱤᱭᱟ)|ᱥᱟᱱᱛᱟᱲᱤ|ᱤᱱᱰᱤᱭᱟ
sbp|Sangu|Sangu|Tanzania|Latn;|TZA|TZS|0|1000|Ishisangu|Ishisangu|Tansaniya
sbp-TZ|Sangu (Tanzania)|Sangu|Tanzania|Latn;|TZA|TZS|0|1000|Ishisangu (Tansaniya)|Ishisangu|Tansaniya
sd|Sindhi|Sindhi|Pakistan|Arab;|PAK|PKR|1|0859|سنڌي|سنڌي|پاکستان
sd-Arab|Sindhi|Sindhi|Pakistan|Arab;|PAK|PKR|1|0859|سنڌي|سنڌي|پاکستان
sd-Arab-PK|Sindhi (Pakistan)|Sindhi|Pakistan|Arab;|PAK|PKR|1|0859|سنڌي (پاکستان)|سنڌي|پاکستان
sd-Deva|Sindhi (Devanagari)|Sindhi (Devanagari)|India|Deva;|IND|INR|0|0459|सिन्धी|सिन्धी|भारत
sd-Deva-IN|Sindhi (Devanagari, India)|Sindhi (Devanagari)|India|Deva;|IND|INR|0|0459|सिन्धी (भारत)|सिन्धी|भारत
se|Northern Sami|Northern Sami|Norway|Latn;|NOR|NOK|0|043b|davvisámegiella|davvisámegiella|Norga
se-FI|Sami, Northern (Finland)|Sami (Northern)|Finland|Latn;|FIN|EUR|0|0c3b|davvisámegiella (Suopma)|davvisámegiella|Suopma
se-NO|Sami, Northern (Norway)|Northern Sami|Norway|Latn;|NOR|NOK|0|043b|davvisámegiella (Norga)|davvisámegiella|Norga
se-SE|Sami, Northern (Sweden)|Sami (Northern)|Sweden|Latn;|SWE|SEK|0|083b|davvisámegiella (Ruoŧŧa)|davvisámegiella|Ruoŧŧa
seh|Sena|Sena|Mozambique|Latn;|MOZ|MZN|0|1000|sena|sena|Moçambique
seh-MZ|Sena (Mozambique)|Sena|Mozambique|Latn;|MOZ|MZN|0|1000|sena (Moçambique)|sena|Moçambique
ses|Koyraboro Senni|Koyraboro Senni|Mali|Latn;|MLI|XOF|0|1000|Koyraboro senni|Koyraboro senni|Maali
ses-ML|Koyraboro Senni (Mali)|Koyraboro Senni|Mali|Latn;|MLI|XOF|0|1000|Koyraboro senni (Maali)|Koyraboro senni|Maali
sg|Sango|Sango|Central African Republic|Latn;|CAF|XAF|0|1000|Sängö|Sängö|Ködörösêse tî Bêafrîka
sg-CF|Sango (Central African Republic)|Sango|Central African Republic|Latn;|CAF|XAF|0|1000|Sängö (Ködörösêse tî Bêafrîka)|Sängö|Ködörösêse tî Bêafrîka
shi|Tachelhit|Tachelhit|Morocco|Tfng;|MAR|MAD|0|1000|ⵜⴰⵛⵍⵃⵉⵜ|ⵜⴰⵛⵍⵃⵉⵜ|ⵍⵎⵖⵔⵉⴱ
shi-Latn|Tachelhit (Latin)|Tachelhit (Latin)|Morocco|Latn;|MAR|MAD|0|1000|Tashelḥiyt (Latin)|Tashelḥiyt|lmɣrib
shi-Latn-MA|Tachelhit (Latin, Morocco)|Tachelhit (Latin)|Morocco|Latn;|MAR|MAD|0|1000|Tashelḥiyt (lmɣrib)|Tashelḥiyt|lmɣrib
shi-Tfng|Tachelhit (Tifinagh)|Tachelhit (Tifinagh)|Morocco|Tfng;|MAR|MAD|0|1000|ⵜⴰⵛⵍⵃⵉⵜ (Tifinagh)|ⵜⴰⵛⵍⵃⵉⵜ|ⵍⵎⵖⵔⵉⴱ
shi-Tfng-MA|Tachelhit (Tifinagh, Morocco)|Tachelhit (Tifinagh)|Morocco|Tfng;|MAR|MAD|0|1000|ⵜⴰⵛⵍⵃⵉⵜ (ⵍⵎⵖⵔⵉⴱ)|ⵜⴰⵛⵍⵃⵉⵜ|ⵍⵎⵖⵔⵉⴱ
si|Sinhala|Sinhala|Sri Lanka|Sinh;|LKA|LKR|0|045b|සිංහල|සිංහල|ශ්‍රී ලංකාව
si-LK|Sinhala (Sri Lanka)|Sinhala|Sri Lanka|Sinh;|LKA|LKR|0|045b|සිංහල (ශ්‍රී ලංකාව)|සිංහල|ශ්‍රී ලංකාව
sk|Slovak|Slovak|Slovakia|Latn;|SVK|EUR|0|041b|slovenčina|slovenčina|Slovensko
sk-SK|Slovak (Slovakia)|Slovak|Slovakia|Latn;|SVK|EUR|0|041b|slovenčina (Slovensko)|slovenčina|Slovensko
sl|Slovenian|Slovenian|Slovenia|Latn;|SVN|EUR|0|0424|slovenščina|slovenščina|Slovenija
sl-SI|Slovenian (Slovenia)|Slovenian|Slovenia|Latn;|SVN|EUR|0|0424|slovenščina (Slovenija)|slovenščina|Slovenija
sma|Sami (Southern)|Sami (Southern)|Sweden|Latn;|SWE|SEK|0|1c3b|åarjelsaemiengïele|åarjelsaemiengïele|Sveerje
sma-NO|Sami, Southern (Norway)|Sami (Southern)|Norway|Latn;|NOR|NOK|0|183b|åarjelsaemiengïele (Nöörje)|åarjelsaemiengïele|Nöörje
sma-SE|Sami, Southern (Sweden)|Sami (Southern)|Sweden|Latn;|SWE|SEK|0|1c3b|åarjelsaemiengïele (Sveerje)|åarjelsaemiengïele|Sveerje
smj|Sami (Lule)|Sami (Lule)|Sweden|Latn;|SWE|SEK|0|143b|julevusámegiella|julevusámegiella|Svierik
smj-NO|Sami, Lule (Norway)|Sami (Lule)|Norway|Latn;|NOR|NOK|0|103b|julevusámegiella (Vuodna)|julevusámegiella|Vuodna
smj-SE|Sami, Lule (Sweden)|Sami (Lule)|Sweden|Latn;|SWE|SEK|0|143b|julevusámegiella (Svierik)|julevusámegiella|Svierik
smn|Sami (Inari)|Sami (Inari)|Finland|Latn;|FIN|EUR|0|243b|anarâškielâ|anarâškielâ|Suomâ
smn-FI|Sami, Inari (Finland)|Sami (Inari)|Finland|Latn;|FIN|EUR|0|243b|anarâškielâ (Suomâ)|anarâškielâ|Suomâ
sms|Sami (Skolt)|Sami (Skolt)|Finland|Latn;|FIN|EUR|0|203b|sää´mǩiõll|sää´mǩiõll|Lää´ddjânnam
sms-FI|Sami, Skolt (Finland)|Sami (Skolt)|Finland|Latn;|FIN|EUR|0|203b|sää´mǩiõll (Lää´ddjânnam)|sää´mǩiõll|Lää´ddjânnam
sn|Shona|Shona|Zimbabwe|Latn;|ZWE|USD|0|1000|chiShona|chiShona|Zimbabwe
sn-Latn|Shona (Latin)|Shona (Latin)|Zimbabwe|Latn;|ZWE|USD|0|1000|chiShona (Latin)|chiShona (Latin)|Zimbabwe
sn-Latn-ZW|Shona (Latin, Zimbabwe)|Shona (Latin)|Zimbabwe|Latn;|ZWE|USD|0|1000|chiShona (Zimbabwe)|chiShona|Zimbabwe
so|Somali|Somali|Somalia|Latn;|SOM|SOS|0|0477|Soomaali|Soomaali|Soomaaliya
so-DJ|Somali (Djibouti)|Somali|Djibouti|Latn;|DJI|DJF|0|1000|Soomaali (Jabuuti)|Soomaali|Jabuuti
so-ET|Somali (Ethiopia)|Somali|Ethiopia|Latn;|ETH|ETB|0|1000|Soomaali (Itoobiya)|Soomaali|Itoobiya
so-KE|Somali (Kenya)|Somali|Kenya|Latn;|KEN|KES|0|1000|Soomaali (Kenya)|Soomaali|Kenya
so-SO|Somali (Somalia)|Somali|Somalia|Latn;|SOM|SOS|0|0477|Soomaali (Soomaaliya)|Soomaali|Soomaaliya
sq|Albanian|Albanian|Albania|Latn;|ALB|ALL|0|041c|shqip|shqip|Shqipëri
sq-AL|Albanian (Albania)|Albanian|Albania|Latn;|ALB|ALL|0|041c|shqip (Shqipëri)|shqip|Shqipëri
sq-MK|Albanian (North Macedonia)|Albanian|North Macedonia|Latn;|MKD|MKD|0|1000|shqip (Maqedonia e Veriut)|shqip|Maqedonia e Veriut
sq-XK|Albanian (Kosovo)|Albanian|Kosovo|Latn;|XKS|EUR|0|1000|shqip (Kosovë)|shqip|Kosovë
sr|Serbian|Serbian|Serbia|Latn;|SRB|RSD|0|241a|srpski|srpski|Srbija
sr-Cyrl|Serbian (Cyrillic)|Serbian (Cyrillic)|Serbia|Cyrl;|SRB|RSD|0|281a|српски (Ћирилица)|српски|Србија
sr-Cyrl-BA|Serbian (Cyrillic, Bosnia and Herzegovina)|Serbian (Cyrillic)|Bosnia and Herzegovina|Cyrl;|BIH|BAM|0|1c1a|српски (Босна и Херцеговина)|српски|Босна и Херцеговина
sr-Cyrl-ME|Serbian (Cyrillic, Montenegro)|Serbian (Cyrillic)|Montenegro|Cyrl;|MNE|EUR|0|301a|српски (Црна Гора)|српски|Црна Гора
sr-Cyrl-RS|Serbian (Cyrillic, Serbia)|Serbian (Cyrillic)|Serbia|Cyrl;|SRB|RSD|0|281a|српски (Србија)|српски|Србија
sr-Cyrl-XK|Serbian (Cyrillic, Kosovo)|Serbian (Cyrillic)|Kosovo|Cyrl;|XKS|EUR|0|1000|српски (Косово)|српски|Косово
sr-Latn|Serbian (Latin)|Serbian (Latin)|Serbia|Latn;|SRB|RSD|0|241a|srpski (latinica)|srpski|Srbija
sr-Latn-BA|Serbian (Latin, Bosnia & Herzegovina)|Serbian (Latin)|Bosnia & Herzegovina|Latn;|BIH|BAM|0|181a|srpski (Bosna i Hercegovina)|srpski|Bosna i Hercegovina
sr-Latn-ME|Serbian (Latin, Montenegro)|Serbian (Latin)|Montenegro|Latn;|MNE|EUR|0|2c1a|srpski (Crna Gora)|srpski|Crna Gora
sr-Latn-RS|Serbian (Latin, Serbia)|Serbian (Latin)|Serbia|Latn;|SRB|RSD|0|241a|srpski (Srbija)|srpski|Srbija
sr-Latn-XK|Serbian (Latin, Kosovo)|Serbian (Latin)|Kosovo|Latn;|XKS|EUR|0|1000|srpski (Kosovo)|srpski|Kosovo
ss|siSwati|siSwati|South Africa|Latn;|ZAF|ZAR|0|1000|Siswati|Siswati|South Africa
ss-SZ|siSwati (Eswatini)|siSwati|Eswatini|Latn;|SWZ|SZL|0|1000|siSwati (eSwatini)|siSwati|eSwatini
ss-ZA|siSwati (South Africa)|siSwati|South Africa|Latn;|ZAF|ZAR|0|1000|siSwati (South Africa)|siSwati|South Africa
ssy|Saho|Saho|Eritrea|Latn;|ERI|ERN|0|1000|Saho|Saho|Eretria
ssy-ER|Saho (Eritrea)|Saho|Eritrea|Latn;|ERI|ERN|0|1000|Saho (Eretria)|Saho|Eretria
st|Sesotho|Sesotho|South Africa|Latn;|ZAF|ZAR|0|0430|Sesotho|Sesotho|South Africa
st-LS|Sesotho (Lesotho)|Sesotho|Lesotho|Latn;|LSO|ZAR|0|1000|Sesotho (Lesotho)|Sesotho|Lesotho
st-ZA|Sesotho (South Africa)|Sesotho|South Africa|Latn;|ZAF|ZAR|0|0430|Sesotho (South Africa)|Sesotho|South Africa
su|Sundanese|Sundanese|Indonesia|Latn;|IDN|IDR|0|1000|Basa Sunda|Basa Sunda|Indonesia
su-Latn|Sundanese (Latin)|Sundanese (Latin)|Indonesia|Latn;|IDN|IDR|0|1000|Basa Sunda (Latin)|Basa Sunda|Indonesia
su-Latn-ID|Sundanese (Latin, Indonesia)|Sundanese (Latin)|Indonesia|Latn;|IDN|IDR|0|1000|Basa Sunda (Indonesia)|Basa Sunda|Indonesia
sv|Swedish|Swedish|Sweden|Latn;|SWE|SEK|0|041d|svenska|svenska|Sverige
sv-AX|Swedish (Åland Islands)|Swedish|Åland Islands|Latn;|ALA|EUR|0|1000|svenska (Åland)|svenska|Åland
sv-FI|Swedish (Finland)|Swedish|Finland|Latn;|FIN|EUR|0|081d|svenska (Finland)|svenska|Finland
sv-SE|Swedish (Sweden)|Swedish|Sweden|Latn;|SWE|SEK|0|041d|svenska (Sverige)|svenska|Sverige
sw|Kiswahili|Kiswahili|Kenya|Latn;|KEN|KES|0|0441|Kiswahili|Kiswahili|Kenya
sw-CD|Kiswahili (Congo DRC)|Kiswahili|Congo (DRC)|Latn;|COD|CDF|0|1000|Kiswahili (Jamhuri ya Kidemokrasia ya Kongo)|Kiswahili|Jamhuri ya Kidemokrasia ya Kongo
sw-KE|Kiswahili (Kenya)|Kiswahili|Kenya|Latn;|KEN|KES|0|0441|Kiswahili (Kenya)|Kiswahili|Kenya
sw-TZ|Kiswahili (Tanzania)|Kiswahili|Tanzania|Latn;|TZA|TZS|0|1000|Kiswahili (Tanzania)|Kiswahili|Tanzania
sw-UG|Kiswahili (Uganda)|Kiswahili|Uganda|Latn;|UGA|UGX|0|1000|Kiswahili (Uganda)|Kiswahili|Uganda
syr|Syriac|Syriac|Syria|Syrc;|SYR|SYP|1|045a|ܣܘܪܝܝܐ|ܣܘܪܝܝܐ|ܣܘܪܝܐ
syr-SY|Syriac (Syria)|Syriac|Syria|Syrc;|SYR|SYP|1|045a|ܣܘܪܝܝܐ (ܣܘܪܝܐ)|ܣܘܪܝܝܐ|ܣܘܪܝܐ
ta|Tamil|Tamil|India|Taml;|IND|INR|0|0449|தமிழ்|தமிழ்|இந்தியா
ta-IN|Tamil (India)|Tamil|India|Taml;|IND|INR|0|0449|தமிழ் (இந்தியா)|தமிழ்|இந்தியா
ta-LK|Tamil (Sri Lanka)|Tamil|Sri Lanka|Taml;|LKA|LKR|0|0849|தமிழ் (இலங்கை)|தமிழ்|இலங்கை
ta-MY|Tamil (Malaysia)|Tamil|Malaysia|Taml;|MYS|MYR|0|1000|தமிழ் (மலேசியா)|தமிழ்|மலேசியா
ta-SG|Tamil (Singapore)|Tamil|Singapore|Taml;|SGP|SGD|0|1000|தமிழ் (சிங்கப்பூர்)|தமிழ்|சிங்கப்பூர்
te|Telugu|Telugu|India|Telu;|IND|INR|0|044a|తెలుగు|తెలుగు|భారతదేశం
te-IN|Telugu (India)|Telugu|India|Telu;|IND|INR|0|044a|తెలుగు (భారతదేశం)|తెలుగు|భారతదేశం
teo|Teso|Teso|Uganda|Latn;|UGA|UGX|0|1000|Kiteso|Kiteso|Uganda
teo-KE|Teso (Kenya)|Teso|Kenya|Latn;|KEN|KES|0|1000|Kiteso (Kenia)|Kiteso|Kenia
teo-UG|Teso (Uganda)|Teso|Uganda|Latn;|UGA|UGX|0|1000|Kiteso (Uganda)|Kiteso|Uganda
tg|Tajik|Tajik|Tajikistan|Cyrl;|TJK|TJS|0|0428|Тоҷикӣ|Тоҷикӣ|Тоҷикистон
tg-Cyrl|Tajik (Cyrillic)|Tajik (Cyrillic)|Tajikistan|Cyrl;|TJK|TJS|0|0428|Тоҷикӣ (Кирилликӣ)|тоҷикӣ|Тоҷикистон
tg-Cyrl-TJ|Tajik (Cyrillic, Tajikistan)|Tajik (Cyrillic)|Tajikistan|Cyrl;|TJK|TJS|0|0428|тоҷикӣ (Тоҷикистон)|тоҷикӣ|Тоҷикистон
th|Thai|Thai|Thailand|Thai;|THA|THB|0|041e|ไทย|ไทย|ไทย
th-TH|Thai (Thailand)|Thai|Thailand|Thai;|THA|THB|0|041e|ไทย (ไทย)|ไทย|ไทย
ti|Tigrinya|Tigrinya|Eritrea|Ethi;|ERI|ERN|0|0873|ትግር|ትግር|ኤርትራ
ti-ER|Tigrinya (Eritrea)|Tigrinya|Eritrea|Ethi;|ERI|ERN|0|0873|ትግር (ኤርትራ)|ትግር|ኤርትራ
ti-ET|Tigrinya (Ethiopia)|Tigrinya|Ethiopia|Ethi;|ETH|ETB|0|0473|ትግር (ኢትዮጵያ)|ትግር|ኢትዮጵያ
tig|Tigre|Tigre|Eritrea|Ethi;|ERI|ERN|0|1000|ትግረ|ትግረ|ኤርትራ
tig-ER|Tigre (Eritrea)|Tigre|Eritrea|Ethi;|ERI|ERN|0|1000|ትግረ (ኤርትራ)|ትግረ|ኤርትራ
tk|Turkmen|Turkmen|Turkmenistan|Latn;|TKM|TMT|0|0442|türkmen dili|türkmen dili|Türkmenistan
tk-TM|Turkmen (Turkmenistan)|Turkmen|Turkmenistan|Latn;|TKM|TMT|0|0442|türkmen dili (Türkmenistan)|türkmen dili|Türkmenistan
tn|Setswana|Setswana|South Africa|Latn;|ZAF|ZAR|0|0432|Setswana|Setswana|Aforika Borwa
tn-BW|Setswana (Botswana)|Setswana|Botswana|Latn;|BWA|BWP|0|0832|Setswana (Botswana)|Setswana|Botswana
tn-ZA|Setswana (South Africa)|Setswana|South Africa|Latn;|ZAF|ZAR|0|0432|Setswana (Aforika Borwa)|Setswana|Aforika Borwa
to|Tongan|Tongan|Tonga|Latn;|TON|TOP|0|1000|lea fakatonga|lea fakatonga|Tonga
to-TO|Tongan (Tonga)|Tongan|Tonga|Latn;|TON|TOP|0|1000|lea fakatonga (Tonga)|lea fakatonga|Tonga
tr|Turkish|Turkish|Türkiye|Latn;|TUR|TRY|0|041f|Türkçe|Türkçe|Türkiye
tr-CY|Turkish (Cyprus)|Turkish|Cyprus|Latn;|CYP|EUR|0|1000|Türkçe (Kıbrıs)|Türkçe|Kıbrıs
tr-TR|Turkish (Türkiye)|Turkish|Türkiye|Latn;|TUR|TRY|0|041f|Türkçe (Türkiye)|Türkçe|Türkiye
ts|Xitsonga|Xitsonga|South Africa|Latn;|ZAF|ZAR|0|0431|Xitsonga|Xitsonga|South Africa
ts-ZA|Xitsonga (South Africa)|Xitsonga|South Africa|Latn;|ZAF|ZAR|0|0431|Xitsonga (South Africa)|Xitsonga|South Africa
tt|Tatar|Tatar|Russia|Cyrl;|RUS|RUB|0|0444|татар|татар|Россия
tt-RU|Tatar (Russia)|Tatar|Russia|Cyrl;|RUS|RUB|0|0444|татар (Россия)|татар|Россия
twq|Tasawaq|Tasawaq|Niger|Latn;|NER|XOF|0|1000|Tasawaq senni|Tasawaq senni|Nižer
twq-NE|Tasawaq (Niger)|Tasawaq|Niger|Latn;|NER|XOF|0|1000|Tasawaq senni (Nižer)|Tasawaq senni|Nižer
tzm|Central Atlas Tamazight|Central Atlas Tamazight|Algeria|Latn;|DZA|DZD|0|085f|Tamaziɣt n laṭlaṣ|Tamaziɣt n laṭlaṣ|Djazaïr
tzm-Arab|Central Atlas Tamazight (Arabic)|Central Atlas Tamazight (Arabic)|Morocco|Arab;|MAR|MAD|1|045f|الأمازيغية وسط الأطلس|الأمازيغية وسط الأطلس|المغرب
tzm-Arab-MA|Central Atlas Tamazight (Arabic, Morocco)|Central Atlas Tamazight (Arabic)|Morocco|Arab;|MAR|MAD|1|045f|الأمازيغية وسط الأطلس (المغرب)|الأمازيغية وسط الأطلس|المغرب
tzm-Latn|Central Atlas Tamazight (Latin)|Central Atlas Tamazight (Latin)|Algeria|Latn;|DZA|DZD|0|085f|Tamaziɣt n laṭlaṣ (Latin)|Tamaziɣt n laṭlaṣ|Djazaïr
tzm-Latn-DZ|Central Atlas Tamazight (Latin, Algeria)|Central Atlas Tamazight (Latin)|Algeria|Latn;|DZA|DZD|0|085f|Tamaziɣt n laṭlaṣ (Djazaïr)|Tamaziɣt n laṭlaṣ|Djazaïr
tzm-Latn-MA|Central Atlas Tamazight (Latin, Morocco)|Central Atlas Tamazight (Latin)|Morocco|Latn;|MAR|MAD|0|1000|Tamaziɣt n laṭlaṣ (Meṛṛuk)|Tamaziɣt n laṭlaṣ|Meṛṛuk
tzm-Tfng|Central Atlas Tamazight (Tifinagh)|Central Atlas Tamazight (Tifinagh)|Morocco|Tfng;|MAR|MAD|0|105f|Tamazight (Tifinagh)|ⵜⴰⵎⴰⵣⵉⵖⵜ|ⵍⵎⵖⵔⵉⴱ
tzm-Tfng-MA|Central Atlas Tamazight (Tifinagh, Morocco)|Central Atlas Tamazight (Tifinagh)|Morocco|Tfng;|MAR|MAD|0|105f|ⵜⴰⵎⴰⵣⵉⵖⵜ (ⵍⵎⵖⵔⵉⴱ)|ⵜⴰⵎⴰⵣⵉⵖⵜ|ⵍⵎⵖⵔⵉⴱ
ug|Uyghur|Uyghur|China|Arab;|CHN|CNY|1|0480|ئۇيغۇرچە|ئۇيغۇرچە|جۇڭخۇا خەلق جۇمھۇرىيىتى
ug-CN|Uyghur (China)|Uyghur|China|Arab;|CHN|CNY|1|0480|ئۇيغۇرچە (جۇڭخۇا خەلق جۇمھۇرىيىتى)|ئۇيغۇرچە|جۇڭخۇا خەلق جۇمھۇرىيىتى
uk|Ukrainian|Ukrainian|Ukraine|Cyrl;|UKR|UAH|0|0422|українська|українська|Україна
uk-UA|Ukrainian (Ukraine)|Ukrainian|Ukraine|Cyrl;|UKR|UAH|0|0422|українська (Україна)|українська|Україна
ur|Urdu|Urdu|Pakistan|Arab;|PAK|PKR|1|0420|اردو|اردو|پاکستان
ur-IN|Urdu (India)|Urdu|India|Arab;|IND|INR|1|0820|اردو (بھارت)|اردو|بھارت
ur-PK|Urdu (Pakistan)|Urdu|Pakistan|Arab;|PAK|PKR|1|0420|اردو (پاکستان)|اردو|پاکستان
uz|Uzbek|Uzbek|Uzbekistan|Latn;|UZB|UZS|0|0443|ozbek|ozbek|Oʻzbekiston
uz-Arab|Uzbek (Arabic)|Uzbek (Arabic)|Afghanistan|Arab;|AFG|AFN|1|1000|اوزبیک (عربی)|اوزبیک|افغانستان
uz-Arab-AF|Uzbek (Arabic, Afghanistan)|Uzbek (Arabic)|Afghanistan|Arab;|AFG|AFN|1|1000|اوزبیک (افغانستان)|اوزبیک|افغانستان
uz-Cyrl|Uzbek (Cyrillic)|Uzbek (Cyrillic)|Uzbekistan|Cyrl;|UZB|UZS|0|0843|Ўзбек (Кирил)|ўзбекча|Ўзбекистон
uz-Cyrl-UZ|Uzbek (Cyrillic, Uzbekistan)|Uzbek (Cyrillic)|Uzbekistan|Cyrl;|UZB|UZS|0|0843|ўзбекча (Ўзбекистон)|ўзбекча|Ўзбекистон
uz-Latn|Uzbek (Latin)|Uzbek (Latin)|Uzbekistan|Latn;|UZB|UZS|0|0443|ozbek|ozbek|Oʻzbekiston
uz-Latn-UZ|Uzbek (Latin, Uzbekistan)|Uzbek (Latin)|Uzbekistan|Latn;|UZB|UZS|0|0443|ozbek (Oʻzbekiston)|ozbek|Oʻzbekiston
vai|Vai|Vai|Liberia|Vaii;|LBR|LRD|0|1000|ꕙꔤ|ꕙꔤ|ꕞꔤꔫꕩ
vai-Latn|Vai (Latin)|Vai (Latin)|Liberia|Latn;|LBR|LRD|0|1000|Vai (Latin)|Vai|Laibhiya
vai-Latn-LR|Vai (Latin, Liberia)|Vai (Latin)|Liberia|Latn;|LBR|LRD|0|1000|Vai (Laibhiya)|Vai|Laibhiya
vai-Vaii|Vai (Vai)|Vai (Vai)|Liberia|Vaii;|LBR|LRD|0|1000|ꕙꔤ (Vai)|ꕙꔤ|ꕞꔤꔫꕩ
vai-Vaii-LR|Vai (Vai, Liberia)|Vai (Vai)|Liberia|Vaii;|LBR|LRD|0|1000|ꕙꔤ (ꕞꔤꔫꕩ)|ꕙꔤ|ꕞꔤꔫꕩ
ve|Venda|Venda|South Africa|Latn;|ZAF|ZAR|0|0433|Tshivenḓa|Tshivenḓa|South Africa
ve-ZA|Venda (South Africa)|Venda|South Africa|Latn;|ZAF|ZAR|0|0433|Tshivenḓa (South Africa)|Tshivenḓa|South Africa
vi|Vietnamese|Vietnamese|Vietnam|Latn;|VNM|VND|0|042a|Tiếng Việt|Tiếng Việt|Việt Nam
vi-VN|Vietnamese (Vietnam)|Vietnamese|Vietnam|Latn;|VNM|VND|0|042a|Tiếng Việt (Việt Nam)|Tiếng Việt|Việt Nam
vo|Volapük|Volapük|World|Latn;|001|XDR|0|1000|Volapük|Volapük|World
vo-001|Volapük (World)|Volapük|World|Latn;|001|XDR|0|1000|Volapük (World)|Volapük|World
vun|Vunjo|Vunjo|Tanzania|Latn;|TZA|TZS|0|1000|Kyivunjo|Kyivunjo|Tanzania
vun-TZ|Vunjo (Tanzania)|Vunjo|Tanzania|Latn;|TZA|TZS|0|1000|Kyivunjo (Tanzania)|Kyivunjo|Tanzania
wae|Walser|Walser|Switzerland|Latn;|CHE|CHF|0|1000|Walser|Walser|Schwiz
wae-CH|Walser (Switzerland)|Walser|Switzerland|Latn;|CHE|CHF|0|1000|Walser (Schwiz)|Walser|Schwiz
wal|Wolaytta|Wolaytta|Ethiopia|Ethi;|ETH|ETB|0|1000|ወላይታቱ|ወላይታቱ|ኢትዮጵያ
wal-ET|Wolaytta (Ethiopia)|Wolaytta|Ethiopia|Ethi;|ETH|ETB|0|1000|ወላይታቱ (ኢትዮጵያ)|ወላይታቱ|ኢትዮጵያ
wo|Wolof|Wolof|Senegal|Latn;|SEN|XOF|0|0488|Wolof|Wolof|Senegaal
wo-SN|Wolof (Senegal)|Wolof|Senegal|Latn;|SEN|XOF|0|0488|Wolof (Senegaal)|Wolof|Senegaal
xh|isiXhosa|isiXhosa|South Africa|Latn;|ZAF|ZAR|0|0434|isiXhosa|isiXhosa|eMzantsi Afrika
xh-ZA|isiXhosa (South Africa)|isiXhosa|South Africa|Latn;|ZAF|ZAR|0|0434|isiXhosa (eMzantsi Afrika)|isiXhosa|eMzantsi Afrika
xog|Soga|Soga|Uganda|Latn;|UGA|UGX|0|1000|Olusoga|Olusoga|Yuganda
xog-UG|Soga (Uganda)|Soga|Uganda|Latn;|UGA|UGX|0|1000|Olusoga (Yuganda)|Olusoga|Yuganda
yav|Yangben|Yangben|Cameroon|Latn;|CMR|XAF|0|1000|nuasue|nuasue|Kemelún
yav-CM|Yangben (Cameroon)|Yangben|Cameroon|Latn;|CMR|XAF|0|1000|nuasue (Kemelún)|nuasue|Kemelún
yi|Yiddish|Yiddish|World|Hebr;|001|XDR|1|043d|ייִדיש|ייִדיש|וועלט
yi-001|Yiddish (World)|Yiddish|World|Hebr;|001|XDR|1|043d|ייִדיש (וועלט)|ייִדיש|וועלט
yo|Yoruba|Yoruba|Nigeria|Latn;|NGA|NGN|0|046a|Èdè Yorùbá|Èdè Yorùbá|Nàìjíríà
yo-BJ|Yoruba (Benin)|Yoruba|Benin|Latn;|BEN|XOF|0|1000|Èdè Yorùbá (Bɛ̀nɛ̀)|Èdè Yorùbá|Bɛ̀nɛ̀
yo-NG|Yoruba (Nigeria)|Yoruba|Nigeria|Latn;|NGA|NGN|0|046a|Èdè Yorùbá (Nàìjíríà)|Èdè Yorùbá|Nàìjíríà
zgh|Standard Moroccan Tamazight|Standard Moroccan Tamazight|Morocco|Tfng;|MAR|MAD|0|1000|ⵜⴰⵎⴰⵣⵉⵖⵜ|ⵜⴰⵎⴰⵣⵉⵖⵜ|ⵍⵎⵖⵔⵉⴱ
zgh-Tfng|Standard Moroccan Tamazight (Tifinagh)|Standard Moroccan Tamazight (Tifinagh)|Morocco|Tfng;|MAR|MAD|0|1000|ⵜⴰⵎⴰⵣⵉⵖⵜ (Tifinagh)|ⵜⴰⵎⴰⵣⵉⵖⵜ|ⵍⵎⵖⵔⵉⴱ
zgh-Tfng-MA|Standard Moroccan Tamazight (Tifinagh, Morocco)|Standard Moroccan Tamazight (Tifinagh)|Morocco|Tfng;|MAR|MAD|0|1000|ⵜⴰⵎⴰⵣⵉⵖⵜ (ⵍⵎⵖⵔⵉⴱ)|ⵜⴰⵎⴰⵣⵉⵖⵜ|ⵍⵎⵖⵔⵉⴱ
zh|Chinese|Chinese|China|Hani;Hans;|CHN|CNY|2|0804|中文|中文|中国
zh-CN|Chinese (Simplified, China)|Chinese (Simplified)|China|Hani;Hans;|CHN|CNY|2|0804|中文(中国)|中文(简体)|中国
zh-Hans|Chinese (Simplified)|Chinese (Simplified)|China|Hani;Hans;|CHN|CNY|2|0804|中文(简体)|中文(简体)|中国
zh-Hans-HK|Chinese (Simplified, Hong Kong SAR)|Chinese (Simplified)|Hong Kong SAR|Hans;|HKG|HKD|0|1000|中文 (香港特别行政区)|中文(简体)|香港特别行政区
zh-Hans-MO|Chinese (Simplified, Macao SAR)|Chinese (Simplified)|Macao SAR|Hans;|MAC|MOP|0|1000|中文 (澳门特别行政区)|中文(简体)|澳门特别行政区
zh-Hant|Chinese (Traditional)|Chinese (Traditional)|Hong Kong SAR|Hani;Hant;|HKG|HKD|2|0c04|中文(繁體)|中文(繁體)|香港特別行政區
zh-HK|Chinese (Traditional, Hong Kong SAR)|Chinese (Traditional)|Hong Kong SAR|Hani;Hant;|HKG|HKD|2|0c04|中文(香港特別行政區)|中文(繁體)|香港特別行政區
zh-MO|Chinese (Traditional, Macao SAR)|Chinese (Traditional)|Macao SAR|Hani;Hant;|MAC|MOP|0|1404|中文(澳門特別行政區)|中文(繁體)|澳門特別行政區
zh-SG|Chinese (Simplified, Singapore)|Chinese (Simplified)|Singapore|Hani;Hans;|SGP|SGD|2|1004|中文(新加坡)|中文(简体)|新加坡
zh-TW|Chinese (Traditional, Taiwan)|Chinese (Traditional)|Taiwan|Hani;Hant;|TWN|TWD|2|0404|中文(台灣)|中文(繁體)|台灣
zu|isiZulu|isiZulu|South Africa|Latn;|ZAF|ZAR|0|0435|isiZulu|isiZulu|iNingizimu Afrika
zu-ZA|isiZulu (South Africa)|isiZulu|South Africa|Latn;|ZAF|ZAR|0|0435|isiZulu (iNingizimu Afrika)|isiZulu|iNingizimu Afrika

View File

@@ -0,0 +1,375 @@
-- Assign script arguments and check validity
-- Data source:
-- File generated by utility app from Windows data
codeFileName = "windows/win-locale-table-win.txt"
function scriptmap()
-- mapping script id to script name
-- needs to be updated manually, if new scripts are encountered
return {
["Arab"] = "arabic",
["Adlm"] = "adlam",
["Beng"] = "bengali",
["Cakm"] = "chakma",
["Cans"] = "canadian_aboriginal",
["Cher"] = "cherokee",
["Cyrl"] = "cyrillic",
["Deva"] = "devanagari",
["Guru"] = "gurmukhi",
["Java"] = "javanese",
["Latn"] = "latin",
["Mong"] = "mongolian",
["Olck"] = "ol_chiki",
["Tfng"] = "tifinagh",
["Vaii"] = "vai"
}
end
function initmap()
-- mapping locale id to wx language identifier
return {
["ar_AE"] = "wxLANGUAGE_ARABIC_UAE",
["bn_IN"] = "wxLANGUAGE_BANGLA_INDIA",
["ca_ES@valencia"] = "wxLANGUAGE_VALENCIAN",
["chr@cherokee"] = "wxLANGUAGE_CHEROKEE_CHEROKEE",
["chr_US@cherokee"] = "wxLANGUAGE_CHEROKEE_US",
["cy_GB"] = "wxLANGUAGE_WELSH_UK",
["de_AT"] = "wxLANGUAGE_GERMAN_AUSTRIAN",
["de_CH"] = "wxLANGUAGE_GERMAN_SWISS",
["en_IE"] = "wxLANGUAGE_ENGLISH_EIRE",
["en_TT"] = "wxLANGUAGE_ENGLISH_TRINIDAD",
["en_GB"] = "wxLANGUAGE_ENGLISH_UK",
["en_US"] = "wxLANGUAGE_ENGLISH_US",
["es_MX"] = "wxLANGUAGE_SPANISH_MEXICAN",
["es_US"] = "wxLANGUAGE_SPANISH_US",
["ff"] = "wxLANGUAGE_FULAH",
["fo"] = "wxLANGUAGE_FAEROESE",
["fo_DK"] = "wxLANGUAGE_FAEROESE_DENMARK",
["fo_FO"] = "wxLANGUAGE_FAEROESE_FAROE_ISLANDS",
["fr_BE"] = "wxLANGUAGE_FRENCH_BELGIAN",
["fr_CA"] = "wxLANGUAGE_FRENCH_CANADIAN",
["fr_CH"] = "wxLANGUAGE_FRENCH_SWISS",
["fy"] = "wxLANGUAGE_FRISIAN",
["fy_NL"] = "wxLANGUAGE_FRISIAN_NETHERLANDS",
["gd"] = "wxLANGUAGE_SCOTS_GAELIC",
["gd_GB"] = "wxLANGUAGE_SCOTS_GAELIC_UK",
["haw_US"] = "wxLANGUAGE_HAWAIIAN_US",
["it_CH"] = "wxLANGUAGE_ITALIAN_SWISS",
["jv@latin"] = "wxLANGUAGE_JAVANESE_LATIN",
["jv_ID@latin"] = "wxLANGUAGE_JAVANESE_LATIN_INDONESIA",
["kr"] = "wxLANGUAGE_KANURI",
["ku@arabic"] = "wxLANGUAGE_CENTRAL_KURDISH_ARABIC",
["ku_IQ@arabic"] = "wxLANGUAGE_CENTRAL_KURDISH_ARABIC_IRAQ",
["kw_GB"] = "wxLANGUAGE_CORNISH_UK",
["ky"] = "wxLANGUAGE_KIRGHIZ",
["ky_KG"] = "wxLANGUAGE_KIRGHIZ_KYRGYZSTAN",
["lkt_US"] = "wxLANGUAGE_LAKOTA_US",
["lo"] = "wxLANGUAGE_LAOTHIAN",
["lo_LA"] = "wxLANGUAGE_LAOTHIAN_LAOS",
["mni"] = "wxLANGUAGE_MANIPURI",
["mni@bengali"] = "wxLANGUAGE_MANIPURI_BENGALI",
["mni_IN"] = "wxLANGUAGE_MANIPURI_INDIA",
["mn@cyrillic"] = "wxLANGUAGE_MONGOLIAN_CYRILLIC",
["mn@mongolian"] = "wxLANGUAGE_MONGOLIAN_TRADITIONAL",
["mn_CN@mongolian"] = "wxLANGUAGE_MONGOLIAN_TRADITIONAL_CHINA",
["mn_MN@mongolian"] = "wxLANGUAGE_MONGOLIAN_TRADITIONAL_MONGOLIA",
["nl_BE"] = "wxLANGUAGE_DUTCH_BELGIAN",
["pa@arabic"] = "wxLANGUAGE_PUNJABI_ARABIC",
["pa@gurmukhi"] = "wxLANGUAGE_PUNJABI_GURMUKHI",
["pt_BR"] = "wxLANGUAGE_PORTUGUESE_BRAZILIAN",
["quc@latin"] = "wxLANGUAGE_KICHE_LATIN",
["rm"] = "wxLANGUAGE_RHAETO_ROMANCE",
["rm_CH"] = "wxLANGUAGE_RHAETO_ROMANCE_SWITZERLAND",
["rn"] = "wxLANGUAGE_KIRUNDI",
["rn_BI"] = "wxLANGUAGE_KIRUNDI_BURUNDI",
["sd@arabic"] = "wxLANGUAGE_SINDHI_ARABIC",
["se"] = "wxLANGUAGE_SAMI",
["se_FI"] = "wxLANGUAGE_SAMI_FINLAND",
["se_NO"] = "wxLANGUAGE_SAMI_NORWAY",
["se_SE"] = "wxLANGUAGE_SAMI_SWEDEN",
["sg"] = "wxLANGUAGE_SANGHO",
["sg_CF"] = "wxLANGUAGE_SANGHO_CENTRAL_AFRICAN_REPUBLIC",
["si"] = "wxLANGUAGE_SINHALESE",
["si_LK"] = "wxLANGUAGE_SINHALESE_SRI_LANKA",
["sw"] = "wxLANGUAGE_SWAHILI",
["sw_CD"] = "wxLANGUAGE_SWAHILI_CONGO_DRC",
["sw_KE"] = "wxLANGUAGE_SWAHILI_KENYA",
["sw_TZ"] = "wxLANGUAGE_SWAHILI_TANZANIA",
["sw_UG"] = "wxLANGUAGE_SWAHILI_UGANDA",
["to"] = "wxLANGUAGE_TONGA",
["to_TO"] = "wxLANGUAGE_TONGA_TONGA",
["ts"] = "wxLANGUAGE_TSONGA",
["ts_ZA"] = "wxLANGUAGE_TSONGA_SOUTH_AFRICA",
["ug"] = "wxLANGUAGE_UIGHUR",
["ug_CN"] = "wxLANGUAGE_UIGHUR_CHINA",
["xh"] = "wxLANGUAGE_XHOSA",
["xh_ZA"] = "wxLANGUAGE_XHOSA_SOUTH_AFRICA",
["zu"] = "wxLANGUAGE_ZULU",
["zu_ZA"] = "wxLANGUAGE_ZULU_SOUTH_AFRICA",
["zh@Hans"] = "wxLANGUAGE_CHINESE_SIMPLIFIED_EXPLICIT",
["zh@Hant"] = "wxLANGUAGE_CHINESE_TRADITIONAL_EXPLICIT",
["zh_CN"] = "wxLANGUAGE_CHINESE_CHINA",
["zh_HK"] = "wxLANGUAGE_CHINESE_HONGKONG",
["zh_HK@Hans"] = "wxLANGUAGE_CHINESE_SIMPLIFIED_HONGKONG",
["zh_MO"] = "wxLANGUAGE_CHINESE_MACAO",
["zh_MO@Hans"] = "wxLANGUAGE_CHINESE_SIMPLIFIED_MACAO",
["zh_SG"] = "wxLANGUAGE_CHINESE_SINGAPORE",
["zh_TW"] = "wxLANGUAGE_CHINESE_TAIWAN"
}
end
--?? ["kr@latin"] = "wxLANGUAGE_KANURI_LATIN",
--?? ["mn_MN"] = "wxLANGUAGE_MONGOLIAN_MONGOLIA",
function split(str, character)
result = {}
index = 1
for s in string.gmatch(str .. character, "(.-)"..character) do
result[index] = s
index = index + 1
end
return result
end
function string.tohex(str)
return (str:gsub('.', function (c)
cbyte = string.byte(c)
if cbyte >= 20 and cbyte < 127 then
return c
else
return string.format('\\%03o', string.byte(c))
end
end))
end
function string.fromhex(str)
return (str:gsub('..', function (cc)
return tonumber(cc, 16)
end))
end
script2alias = scriptmap();
locid2wxid = initmap()
fo1 = io.open('temp/win_loadlocaletable.sql','w')
fo1:write('-- List of locales supported by Windows\n-- Date: ' .. os.date("%Y-%m-%d %H:%M") .. '\n\n')
fo1:write('-- Data source: MSDN\n\n')
fo1:write("create table if not exists win_localetable (locid char, wxlocid char, wxname char, wxlocidold char, wxnameold char, englishdisplay char, englishlanguage char, englishcountry char, scripts char, country3 char, script4 char, currency char, layout char, idlang char, idsublang char, nativedisplay char, nativelanguage char, nativecountry char, nativedisplayhex char, nativelanguagehex char, nativecountryhex char, primary key (locid));\n")
fo1:write('delete from win_localetable;\nbegin;\n')
count = 0
for line in io.lines(codeFileName) do
rem = string.sub(line,1,1)
if rem ~= "#" then
values = split(line, "|")
-- Column names and descriptions
-- 1 LOCALE_SNAME, // Tag identifying the locale
-- 2 LOCALE_SENGLISHDISPLAYNAME, // English locale name (example: "German (Germany)"
-- 3 LOCALE_SENGLISHLANGUAGENAME, // English language name
-- 4 LOCALE_SENGLISHCOUNTRYNAME, // English country name
-- 5 LOCALE_SSCRIPTS, // List of scripts
-- LOCALE_SISOCTRYNAME2
-- 6 LOCALE_SINTLSYMBOL, // Currency symbol ISO
-- 7 LOCALE_IREADINGLAYOUT, // Layout direction 0=LTR, 1=RTL, 2=TTB-RTL or LTR, 3=TTB-LTR
-- 8 LOCALE_ILANGUAGE, // Numeric language code
-- 9 LOCALE_SNATIVEDISPLAYNAME, // Native locale name (example: "Deutsch (Deutschland)"
-- 10 LOCALE_SNATIVELANGUAGENAME, // Native language name
-- 11 LOCALE_SNATIVECOUNTRYNAME // Native country name
locid = values[1]
-- Extract language, script, and region
sep1, sep2 = string.find(locid, "-")
if sep1 ~= nil then
lcid = string.sub(locid, 1, sep1-1)
ccid = string.sub(locid, sep2+1)
sep1, sep2 = string.find(ccid, "-")
if sep1 ~= nil then
script = string.sub(ccid, 1, sep1-1)
if #script < 4 then
temp = script
script = string.sub(ccid, sep2+1)
ccid = temp
else
ccid = string.sub(ccid, sep2+1)
end
else
if #ccid >= 4 then
script = ccid
ccid = ""
else
script = ""
end
end
else
lcid = locid
script = ""
ccid = ""
end
ENGLISHDISPLAYNAME = values[2]
ENGLISHDISPLAYNAME = ENGLISHDISPLAYNAME:gsub("&", "and")
ENGLISHDISPLAYNAME = ENGLISHDISPLAYNAME:gsub("'", "''")
ENGLISHDISPLAYNAMEHEX = string.tohex(ENGLISHDISPLAYNAME)
if ENGLISHDISPLAYNAME ~= ENGLISHDISPLAYNAMEHEX then
print(' +++ Warning: ' .. locid .. ' - Display name contains non-ASCII characters')
end
ENGLISHLANGUAGENAME = values[3]
ENGLISHLANGUAGENAME = ENGLISHLANGUAGENAME:gsub("'", "''")
ENGLISHCOUNTRYNAME = values[4]
ENGLISHCOUNTRYNAME = ENGLISHCOUNTRYNAME:gsub("'", "''")
ENGLISHCOUNTRYNAME = ENGLISHCOUNTRYNAME:gsub("&", "and")
SCRIPTS = values[5]
if SCRIPTS ~= nil and #SCRIPTS > 4 then
local b = string.find(SCRIPTS, ';')
script4 = string.sub(SCRIPTS,1,b-1)
else
scripts4 = ''
end
COUNTRY3 = values[6]
CURRENCY = values[7]
LAYOUT = values[8]
if LAYOUT ~= '1' then
LAYOUT = 'LTR'
else
LAYOUT = 'RTL'
end
LCID = values[9]
lcidnum = tonumber('0x'..LCID)
lcidnum = lcidnum % 65536
divisor = 1024
idlang = lcidnum % divisor
idsublang = (lcidnum - idlang) / divisor
idlang = string.format("0x%02x", idlang)
idsublang = string.format("0x%02x", idsublang)
-- Clean up names
-- Replace single apostroph by 2 apostrophes (SQL requirement)
NATIVEDISPLAYNAME = values[10]
NATIVEDISPLAYNAME = NATIVEDISPLAYNAME:gsub("'", "''")
NATIVEDISPLAYNAMEHEX = string.tohex(NATIVEDISPLAYNAME)
NATIVELANGUAGENAME = values[11]
NATIVELANGUAGENAME = NATIVELANGUAGENAME:gsub("'", "''")
NATIVELANGUAGENAMEHEX = string.tohex(NATIVELANGUAGENAME)
NATIVECOUNTRYNAME = values[12]
NATIVECOUNTRYNAME = NATIVECOUNTRYNAME:gsub("'", "''")
NATIVECOUNTRYNAMEHEX = string.tohex(NATIVECOUNTRYNAME)
-- Replace common characters with accents by the base character
-- Needed to generate pure ASCII identifier for wxLANGUAGE symbols
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAME
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("é", "e")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("ô", "o")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("", "")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("'", "")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("-", "_")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("å", "a")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("ç", "c")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("ã", "a")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("Å", "A")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("ü", "u")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("ʼ", "")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAME
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("é", "e")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("ô", "o")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("", "")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("'", "")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("%.", "")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("-", "_")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("å", "a")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("ç", "c")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("ã", "a")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("Å", "A")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("ü", "u")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("í", "i")
-- Generate wxLANGUAGE symbol
locidnew = lcid
WXNAME = 'wxLANGUAGE_' .. string.upper(ENGLISHLANGUAGENAMEASC)
if #ccid > 0 then
locidnew = locidnew .. '_' .. ccid
WXNAME = WXNAME .. '_' .. string.upper(ENGLISHCOUNTRYNAMEASC)
end
-- Append script alias to locale identifier
if #script > 0 then
mappedscript = script2alias[script]
if mappedscript ~= nil then
scriptold = script
script = mappedscript
else
mappedscript = 'n/a'
end
locidnew = locidnew .. '@' .. script
-- print('-- New script: ' .. script .. ' - ' .. mappedscript .. ' ' .. locidnew)
end
-- Replace blank characters by underscore
-- Remove parentheses and commas
WXNAME = WXNAME:gsub(" ", "_")
WXNAME = WXNAME:gsub("%(", "")
WXNAME = WXNAME:gsub("%)", "")
WXNAME = WXNAME:gsub("%,", "")
-- Force specific wxLANGUAGE name for listed locale ids (compatibility with prior wxWidgets versions)
mappedwxname = locid2wxid[locidnew]
if mappedwxname ~= nil then
WXNAME = mappedwxname
else
mappedwxname = 'n/a'
end
-- print('-- ' .. locidnew .. ' ' .. WXNAME .. ' ' .. mappedwxname)
-- Force columnar output by appending blank characters
SWXNAME = string.format("%-55s", WXNAME)
slocid = string.format("%-14s", locidnew)
sidlang = string.format("%-4s", idlang)
sidsublang = string.format("%-4s", idsublang)
fo1:write("insert into win_localetable values ('" .. locid .. "', '" .. locidnew .. "', '" .. WXNAME .. "', '-', '-', '" .. string.tohex(ENGLISHDISPLAYNAME) .. "', '" .. string.tohex(ENGLISHLANGUAGENAME) .. "', '" .. string.tohex(ENGLISHCOUNTRYNAME) .. "', '" .. SCRIPTS .. "', '" .. COUNTRY3 .. "', '" .. script4 .. "', '" .. CURRENCY .. "', '" .. LAYOUT .. "', '" .. sidlang .. "', '" .. sidsublang .. "', '" .. NATIVEDISPLAYNAME .. "', '" .. NATIVELANGUAGENAME .. "', '" .. NATIVECOUNTRYNAME .. "', '" .. NATIVEDISPLAYNAMEHEX .. "', '" .. NATIVELANGUAGENAMEHEX .. "', '" .. NATIVECOUNTRYNAMEHEX .. "');\n")
count = count + 1
end
end
-- Add manually entries for compatibility with prior wxWidgets versions
fo1:write("insert or ignore into win_localetable values ('ab', 'ab', 'wxLANGUAGE_ABKHAZIAN', '-', '-', 'Abkhazian', 'Abkhazian', '', '', '', '', '', 'LTR', '-', '-', 'аҧсуа бызшәа', 'аҧсуа бызшәа', '', '" .. string.tohex('аҧсуа бызшәа') .. "', '" .. string.tohex('аҧсуа бызшәа') .. "', '');\n")
fo1:write("insert or ignore into win_localetable values ('ay', 'ay', 'wxLANGUAGE_AYMARA', '-', '-', 'Aymara', 'Aymara', '', '', '', '', '', 'LTR', '-', '-', 'Aymara', 'Aymara', '', 'Aymara', 'Aymara', '');\n")
fo1:write("insert or ignore into win_localetable values ('bh', 'bh', 'wxLANGUAGE_BIHARI', '-', '-', 'Bihari', 'Bihari', '', '', '', '', '', 'LTR', '-', '-', 'Bihari', 'Bihari', '', 'Bihari', 'Bihari', '');\n")
fo1:write("insert or ignore into win_localetable values ('bi', 'bi', 'wxLANGUAGE_BISLAMA', '-', '-', 'Bislama', 'Bislama', '', '', '', '', '', 'LTR', '-', '-', 'Bislama', 'Bislama', 'Vanuatu', 'Bislama', 'Bislama', 'Vanuatu');\n")
fo1:write("insert or ignore into win_localetable values ('en-CB', 'en_CB', 'wxLANGUAGE_ENGLISH_CARIBBEAN_CB', '-', '-', 'English (Caribbean)', 'English (Caribbean)', '', '', '', '', '', 'LTR', '0x09', '0x09', 'English (Caribbean)', 'English (Caribbean)', '', 'English (Caribbean)', 'English (Caribbean)', '');\n")
fo1:write("insert or ignore into win_localetable values ('fj', 'fj', 'wxLANGUAGE_FIJI', '-', '-', 'Fiji', 'Fiji', '', '', '', '', '', 'LTR', '-', '-', 'Na Vosa Vakaviti', 'Na Vosa Vakaviti', '', 'Na Vosa Vakaviti', 'Na Vosa Vakaviti', '');\n")
fo1:write("insert or ignore into win_localetable values ('ie', 'ie', 'wxLANGUAGE_INTERLINGUE', '-', '-', 'Interlingue', 'Interlingue', '', '', '', '', '', 'LTR', '-', '-', 'Interlingue', 'Interlingue', '', 'Interlingue', 'Interlingue', '');\n")
fo1:write("insert or ignore into win_localetable values ('ik', 'ik', 'wxLANGUAGE_INUPIAK', '-', '-', 'Inupiak', 'Inupiak', '', '', '', '', '', 'LTR', '-', '-', 'Inupiaq', 'Inupiaq', '', 'Inupiaq', 'Inupiaq', '');\n")
fo1:write("insert or ignore into win_localetable values ('ks-IN', 'ks_IN', 'wxLANGUAGE_KASHMIRI_INDIA', '-', '-', 'Kashmiri (India)', 'Kashmiri', 'India', '', '', '', '', 'RTL', '0x00', '0x04', 'کشور (بھارت)', 'کٲشُر', 'ہِندوستان', '" .. string.tohex('کشور (بھارت)') .."', '" .. string.tohex('کٲشُر') .."', '" .. string.tohex('ہِندوستان') .."');\n")
fo1:write("insert or ignore into win_localetable values ('ku-TR', 'ku_TR', 'wxLANGUAGE_KURDISH', '-', '-', 'Kurdish', 'Kurdish', '', '', '', '', '', 'LTR', '-', '-', 'Kurdî', 'Kurdî', '', '" .. string.tohex('Kurdî') .. "', '" .. string.tohex('Kurdî') .. "', '');\n")
fo1:write("insert or ignore into win_localetable values ('la-001', 'la_001', 'wxLANGUAGE_LATIN_WORLD', '-', '-', 'Latin (World)', 'Latin', 'World', '', '', '', '', 'LTR', '0x76', '0x01', 'Latina (World)', 'Latina', 'World', 'Latina (Mundus)', 'Latina', 'Mundus');\n")
fo1:write("insert or ignore into win_localetable values ('mo', 'mo', 'wxLANGUAGE_MOLDAVIAN', '-', '-', 'Moldavian', 'Moldavian', '', '', '', '', '', 'LTR', '-', '-', 'лимба молдовеняскэ', 'лимба молдовеняскэ', '', '" .. string.tohex('лимба молдовеняскэ') .. "', '" .. string.tohex('лимба молдовеняскэ') .. "', '');\n")
fo1:write("insert or ignore into win_localetable values ('na', 'na', 'wxLANGUAGE_NAURU', '-', '-', 'Nauru', 'Nauru', 'Nauru', '', '', '', '', 'LTR', '-', '-', 'Nauru', 'Nauru', 'Nauru', 'Nauru', 'Nauru', 'Nauru');\n")
fo1:write("insert or ignore into win_localetable values ('qu', 'qu', 'wxLANGUAGE_QUECHUA_MACRO', '-', '-', 'Quechua', 'Quechua', '', '', '', '', '', 'LTR', '-', '-', 'Qhichwa', 'Qhichwa', '', 'Qhichwa', 'Qhichwa', '');\n")
fo1:write("insert or ignore into win_localetable values ('sm', 'sm', 'wxLANGUAGE_SAMOAN', '-', '-', 'Samoan', 'Samoan', '', '', '', '', '', 'LTR', '-', '-', 'Samoa', 'Samoa', 'Samoa', 'Samoa', 'Samoa', 'Samoa');\n")
fo1:write("insert or ignore into win_localetable values ('sr-RS', 'sr_RS', 'wxLANGUAGE_SERBIAN_SERBIA', '-', '-', 'Serbian (Serbia)', 'Serbian', 'Serbia', '', '', '', '', 'LTR', '0x1a', '0x01', 'srpski (Srbija)', 'srpski', 'Srbija', 'srpski (Srbija)', 'srpski', 'Srbija');\n")
fo1:write("insert or ignore into win_localetable values ('sr-YU', 'sr_YU', 'wxLANGUAGE_SERBIAN_YU', '-', '-', 'Serbian', 'Serbian', '', '', '', '', '', 'LTR', '0x1a', '0x01', 'srpski', 'srpski', 'Srbija', 'srpski', 'srpski', 'Srbija');\n")
fo1:write("insert or ignore into win_localetable values ('sr-Cyrl-YU', 'sr_YU@cyrillic', 'wxLANGUAGE_SERBIAN_CYRILLIC_YU', '-', '-', 'Serbian (Cyrillic)', 'Serbian (Cyrillic)', '', 'Cyrl;', '', '', '', 'LTR', '0x1a', '0x03', 'српски (Србија)', 'српски', 'Србија', '" .. string.tohex('српски (Србија)') .. "', '" .. string.tohex('српски') .. "', '" .. string.tohex('Србија') .. "');\n")
fo1:write("insert or ignore into win_localetable values ('sr-Latn-YU', 'sr_YU@latin', 'wxLANGUAGE_SERBIAN_LATIN_YU', '-', '-', 'Serbian (Latin)', 'Serbian (Latin)', '', 'Latn;', '', '', '', 'LTR', '0x1a', '0x02', 'srpski (latinica)', 'srpski', 'Srbija', 'srpski (latinica)', 'srpski', 'Srbija');\n")
fo1:write("insert or ignore into win_localetable values ('sh', 'sh', 'wxLANGUAGE_SERBO_CROATIAN', '-', '-', 'Serbo-Croatian', 'Serbo-Croatian', '', '', '', '', '', 'LTR', '-', '-', 'srpskohrvatski', 'srpskohrvatski', '', 'srpskohrvatski', 'srpskohrvatski', '');\n")
fo1:write("insert or ignore into win_localetable values ('tl', 'tl', 'wxLANGUAGE_TAGALOG', '-', '-', 'Tagalog', 'Tagalog', '', 'Latn;', 'PHL', '', '', 'LTR', '-', '-', 'Tagalog', 'Tagalog', '', 'Tagalog', 'Tagalog', '');\n")
fo1:write("insert or ignore into win_localetable values ('tl-PH', 'tl_PH', 'wxLANGUAGE_TAGALOG_PHILIPPINES', '-', '-', 'Tagalog (Philippines)', 'Tagalog', 'Philippines', 'Latn;', 'PHL', '', '', 'LTR', '-', '-', 'Tagalog (Pilipinas)', 'Tagalog', 'Pilipinas', 'Tagalog (Pilipinas)', 'Tagalog', 'Pilipinas');\n")
fo1:write("insert or ignore into win_localetable values ('tw', 'tw', 'wxLANGUAGE_TWI', '-', '-', 'Twi', 'Twi', '', '', '', '', '', 'LTR', '-', '-', 'Twi', 'Twi', 'Ghana', 'Twi', 'Twi', 'Ghana');\n")
fo1:write("insert or ignore into win_localetable values ('za', 'za', 'wxLANGUAGE_ZHUANG', '-', '-', 'Zhuang', 'Zhuang', '', '', '', '', '', 'LTR', '-', '-', 'Zhuang', 'Zhuang', 'China', 'Zhuang', 'Zhuang', 'China');\n")
-- Update count to reflect manual entries (needs to be updated, if entries are added or removed)
count = count + 24
print(" Number of locales = " .. count)
fo1:write('commit;\n')
fo1:close()

View File

@@ -0,0 +1,25 @@
-- Assign script arguments and check validity
codeFileName = "temp/langtabl_current.txt"
function trim(s)
return s:match'^%s*(.*%S)' or ''
end
fo2 = io.open('temp/wx_loadlangtabl.sql','w')
fo2:write("create table if not exists wx_langmap (wxlangname char, wxlangid char, wxlocregion, wxversion char, primary key (wxlangname));\n")
fo2:write('delete from wx_langmap;\nbegin;\n')
count = 0
for line in io.lines(codeFileName) do
wxlangname = trim(string.sub(line,1,55))
wxversion = trim(string.sub(line,57,65))
wxlangid = trim(string.sub(line,82,106))
wxlocregion = trim(string.sub(line,108,121))
fo2:write("insert into wx_langmap values ('" .. wxlangname .. "', '" .. wxlangid .. "', '" .. wxlocregion .. "', '" .. wxversion .. "');\n")
count = count + 1
end
print(" Number of languages = " .. count)
fo2:write('commit;\n')
fo2:close()

View File

@@ -0,0 +1,45 @@
-- Assign script arguments and check validity
codeFileName = "temp/synonymtabl_current.txt"
function trim(s)
return s:match'^%s*(.*%S)' or ''
end
function split(str, character)
result = {}
index = 1
-- (.-),
-- for s in string.gmatch(str, "[^"..character.."]+") do
for s in string.gmatch(str .. character, "(.-)"..character) do
result[index] = s
index = index + 1
end
return result
end
fo2 = io.open('temp/wx_loadsynonymtabl.sql','w')
fo2:write('-- Known syonyms in wx\n-- Date: ' .. os.date("%Y-%m-%d %H:%M") .. '\n\n')
fo2:write("create table if not exists wx_synonyms (wxnamesyn char, wxnameprim char, winlocid char, wxversion char, primary key (wxnamesyn));\n")
fo2:write('delete from wx_synonyms;\nbegin;\n')
-- Code|N°|English Name|Nom français|Alias|Age|Date
count = 0
for line in io.lines(codeFileName) do
rem = string.sub(line,1,1)
if rem ~= "#" then
wxnamesyn = trim(string.sub(line,1,55))
wxnameprim = trim(string.sub(line,57,111))
winlocid = trim(string.sub(line,113,126))
wxversion = trim(string.sub(line,128,136))
fo2:write("insert into wx_synonyms values ('" .. wxnamesyn .. "', '" .. wxnameprim .. "', '" .. winlocid .. "', '" .. wxversion .. "');\n")
count = count + 1
end
end
print(" Number of synonyms = " .. count)
fo2:write('commit;\n')
fo2:close()

View File

@@ -0,0 +1,32 @@
-- Retrieve current wxWidgets version
codeFileName = "../../../include/wx/version.h"
function trim(s)
return s:match'^%s*(.*%S)' or ''
end
fo2 = io.open('temp/wx_loadversion.sql','w')
fo2:write('-- Current wxWidgets version\n-- Date: ' .. os.date("%Y-%m-%d %H:%M") .. '\n\n')
fo2:write("create table if not exists wx_version (version char, primary key (version));\n")
fo2:write('delete from wx_version;\nbegin;\n')
count = 0
for line in io.lines(codeFileName) do
vkey = trim(string.sub(line,1,28))
vval = trim(string.sub(line,30,35))
if vkey == "#define wxMAJOR_VERSION" then
vmajor = vval
elseif vkey == "#define wxMINOR_VERSION" then
vminor = vval
elseif vkey == "#define wxRELEASE_NUMBER" then
vrelno = vval
elseif vkey == "#define wxSUBRELEASE_NUMBER" then
vsubno = vval
end
end
wxversion = vmajor .. "." .. vminor .. "." .. vrelno
print(" wxWidgets version number:", wxversion)
fo2:write("insert into wx_version values('" .. wxversion .. "');\n")
fo2:write('commit;\n')
fo2:close()