Update wxWidgets language database and improve locale matching

This commit improves the best locale match algorithm by prioritizing
closer matches and add many new tests verifying that this works as
expected.

In order to do this, new information had to be added to the language
database, which was extended with it and updated to use the latest
Unicode CLDR data and latest Windows 11 locale list.

Further, add a set of scripts for maintaining the language database up
to date and a GitHub workflow `genlangdb.yml` which can be run manually
to regenerate the wxWidgets language-related source and header files
from the underlying Windows and Unicode data. It produces 2 artifacts:

- wxLanguageDatabaseDist.zip allows to easily update the
  language-related files in the wxWidgets repository by simply copying
  all files.
- the normal workflow log and wxLanguageDatabaseLog.zip allow to check
  all temporary files of the regeneration process and to detect
  potential issues, before the language-related files are actually
  replaced by the new ones.

Finally, fix wxUILocaleImplName::GetPreferredUILanguages: Under Windows
10 and above the Windows API function ::GetUserPreferredUILanguages()
returns only the primary UI language plus US English. Additional
preferred UI languages installed by the user are ignored, so instead of
using this function read the list of user preferred languages from the
Windows registry.

Closes #24855.
This commit is contained in:
Ulrich Telle
2024-11-18 16:46:25 +01:00
committed by Vadim Zeitlin
parent 7239f6ee11
commit 57e1c9e1ee
52 changed files with 18147 additions and 1471 deletions
+72 -29
View File
@@ -1,9 +1,22 @@
Run the genlang.py script from the top level wxWidgets directory to
update include/wx/language.h (wxLanguage enum), interface/wx/language.h
(its documentation) and src/common/languageinfo.cpp (conversion tables)
with the data from langtabl.txt, synonymtabl.txt, and scripttabl.txt.
# The wxWidgets language database
langtabl.txt contains a tabular list of language entries. Each entry
## Regeneration of the wxWidgets language database related files
Run the `genlang.py` script from the top level wxWidgets directory to
update `include/wx/language.h` (wxLanguage enum), `interface/wx/language.h`
(its documentation), `src/common/languageinfo.cpp` (conversion tables)
and the actual tabular data in `include/wx/private/lang_*.h` with the data
from `langtabl.txt`, `synonymtabl.txt`, `scripttabl.txt`, `likelytabl.txt`,
`matchingtabl.txt`, and `regiongrouptabl.txt`.
The files with the raw tabular data - `langtabl.txt`, `synonymtabl.txt`,
`scripttabl.txt`, `likelytabl.txt`, `matchingtabl.txt`, and
`regiongrouptabl.txt` - are derived from public data of the Unicode
organization. The scripts to generate the files are provided.
## Description of the raw data files
`langtabl.txt` contains a tabular list of language entries. Each entry
contains
- a symbolic language identifier used in enum wxLanguage,
@@ -18,24 +31,48 @@ contains
- language and region description in English
- language and region description in native language.
scripttabl.txt contains a list of 4-letter script codes and their
`scripttabl.txt` contains a list of 4-letter script codes and their
aliases (English) based on the ISO 15924 standard (2), restricted to
entries for which aliases are defined. This list is used in wxWidgets
to convert between script code used in BCP 47-like identifiers and
script modifiers used in Unix locale names. The data in (2) can be used
to update scripttabl.txt if necessary.
synonymtabl.txt contains a list of aliases for symbolic language identifiers.
`synonymtabl.txt` contains a list of aliases for symbolic language identifiers.
This list is used to generate specific entries in wxLanguage enumeration.
Note: None of the files langtabl.txt, synonymtabl.txt, and scripttabl.txt should be
The following 3 files are used in the algorithm determining the best translation
language based on the list of preferred UI languages and the list of available
translations.
`likelytabl.txt` contains for most locales the likely subtags for script and
region.
`matchingtabl.txt` contains a map relating languages to possible replacement
languages giving the relative distance between 2 languages.
`regiongrouptabl.txt` contains for some languages region groups. This allows
to determine whether certain regional language variants are closer to each
other or not.
**Note**: None of the files `langtabl.txt`, `synonymtabl.txt`, `scripttabl.txt`,
`likelytabl.txt`, `matchingtabl.txt`, and``regiongrouptabl.txt` should be
edited manually. Instead these files should be regenerated under Windows 11 or
above.
## Regeneration process
Windows provides an extensive list of locales. This list is used to regenerate
the files langtabl.txt, synonymtabl.txt, and scripttabl.txt. The subdirectory
util contains the C source of a small utility application that queries Windows
for a list of known locales.
the files `langtabl.txt`, `synonymtabl.txt`, and `scripttabl.txt`. The
subdirectory `util` contains the C source of a small utility application
`showlocales.c` that queries Windows for a list of known locales.
**Note**: It is recommended to run `showlocales` on a Windows 11 Pro desktop
computer, because the desktop versions of Windows get updates of locale data
more frequently than server versions of Windows. Unfortunately, there is no
easy method to determine when the locale data were last updated. The date of
last modification of the file `Windows/System32/locale.nls` can be an
indication when the last update occurred.
2 additional tools are required to perform the regeneration process:
@@ -46,39 +83,45 @@ for a list of known locales.
current SQLite version). Alternatively, the SQLite shell can be compiled from
sources - the archive "sqlite-amalgamation-3xxyyzz.zip" contains the required
source files.
The scripts expect that the executable `sqlite3.exe` can be found on the path.
2) Lua shell
Precompiled binaries are available at https://luabinaries.sourceforge.net/.
Download lua-x.y.z_Win32_bin.zip or lua-x.y.z_Win64_bin.zip (where x, y, z denotes
the lua version) from the download page. Rename the executable luaxy.exe to
luashell.exe or adjust the batch file mklangtablnew.bat accordingly.
Download lua-x.y.z_Win32_bin.zip or lua-x.y.z_Win64_bin.zip (where x, y, z
denotes the lua version) from the download page.
Adjust the script file `misc/languages/data/setupenv.ps1`, so that the
environment variable `$env:luashell` contains the name of the executable,
and add the location of the executables to the path.
The regeneration process consists of the following steps:
All provided scripts are PowerShell scripts. It is recommended to use
PowerShell 7 or higher. The regeneration process consists of the following steps:
1) Regenerate the list of known Windows locales (optional)
This step is usually only required when a new major Windows version is published.
The utility showlocales should be invoked from a command prompt as follows:
The utility `showlocales` should be invoked from a command prompt as follows:
showlocales > win-locale-table-win.txt
The resulting file win-locale-table-win.txt has to be placed into subdirectory
data/windows.
The resulting file `win-locale-table-win.txt` has to be placed into subdirectory
`data/windows`. Alternatively, the script `getwindowsdata.ps1` can be used.
2) Update the Unicode data files (optional)
This step is only required when the Unicode data were actually updated.
To perform this step execute the batch file getunicodefiles.bat, located in the
data subdirectory.
To perform this step execute the script file `getunicodefiles.ps1`, located
in the `data` subdirectory.
3) Regenerate langtabl.txt, synonymtabl.txt, and scripttabl.txt
To perform this step execute the batch file mklangtablnew.bat, located in the
data subdirectory. The new versions will be placed in the data directory.
3) Regenerate the tabular data files `langtabl.txt`, `synonymtabl.txt`,
`scripttabl.txt` etc.
To perform this step execute the script files `gensqlfiles.ps1` and
`makelangdb.ps1`, located in the `data` subdirectory.
The new versions will be placed in the `data` directory.
4) Check resulting new files langtabl.txt, synonymtabl.txt, and scripttabl.txt
The messages from step 3 issued by the batch file and the resulting files should
be carefully checked. If no errors occurred, the batch file replacetables.bat
can be executed.
4) Check the resulting new tabular data.
The messages from step 3 issued by the script files and the resulting files
should be carefully checked. If no errors occurred, the script file
replacetables.bat can be executed.
5) Run the Python script genlang.py from the top level wxWidgets directory.
5) Run the Python script `genlang.py` from the top level wxWidgets directory.
6) Commit the changes.
@@ -87,7 +130,7 @@ Notes:
The scripts expect the data table files in a new format that was first introduced
in version 3.3.0.
2) If you need to add locales not present in the list of known Windows locales, then
they should be added at the end of the script win_genlocaletable.lua.
they should be added at the end of the script `win_genlocaletable.lua`.
Footnotes
(1) used on Windows only, deprecated by Microsoft
+49
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."
-17
View File
@@ -1,17 +0,0 @@
rem Download files from Unicode Org
rem Retrieve working directory
set "workdir=%cd%"
rem Create backup copies
copy unicode\iso15924.txt unicode\iso15924.txt.bak
copy unicode\territory_codes.txt unicode\territory_codes.txt.bak
rem Download ISO 15924 (list of scripts)
bitsadmin /transfer wxDownloadJob /download /priority normal https://www.unicode.org/iso15924/iso15924.txt %workdir%\unicode\iso15924.txt
rem Download ISO 3166 (list of territories)
bitsadmin /transfer wxDownloadJob /download /priority normal https://github.com/unicode-org/cldr/raw/main/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/territory_codes.txt %workdir%\unicode\territory_codes.txt
luashell removewhitespace.lua unicode/iso15924.txt
luashell removewhitespace.lua unicode/territory_codes.txt
+56
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."
+11
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."
+11
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."
+10 -1
View File
@@ -14,7 +14,16 @@
.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)
.print Generate new tables (langtabl, scripttabl, synonymtabl, likelytabl, matchingtabl)
.read mkwxtables.sql
-25
View File
@@ -1,25 +0,0 @@
rem Batch script to regenerate the list of known locales
rem Create a copy of the current lists
copy ..\langtabl.txt temp\langtabl_current.txt
copy ..\scripttabl.txt temp\scripttabl_current.txt
copy ..\synonymtabl.txt temp\synonymtabl_current.txt
rem Generate lists based on Unicode data
luashell unicode\uni_territorycodes.lua
luashell unicode\uni_genscriptmap.lua
rem Generate list of locales based on known Windows locales
luashell windows\win_genlocaletable.lua
rem Generate lists based on current wxWidgets data
rem Extract current wxWidgets version
luashell wx\wx_readversion.lua
rem Load current version of langtabl.txt
luashell wx\wx_loadlangtabl.lua
rem Load list of current synonyms
luashell wx\wx_loadsynonymtabl.lua
rem Generate locale data database
del localedata.db3
sqlite3 localedata.db3 ".read mkdatabase.sql"
+27 -1
View File
@@ -23,11 +23,16 @@ 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);
@@ -73,8 +78,10 @@ select printf('%-55s %-9s %-14s %-25s %-14s %-4s %-4s %s "%s","%s"',
.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, lower(scalias)) from uni_scriptmap where scalias <> '-' order by sctag;
select printf('%-4s %s', sctag, scalias) from uni_scriptmap where scalias <> '-' order by sctag;
.output stdout
-- Generate new list of wxLANGUAGE synonyms
@@ -86,3 +93,22 @@ 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
-6
View File
@@ -1,6 +0,0 @@
rem Batch script to replace the data tables by new versions
rem Replace previous versions with new versions
copy langtabl.txt ..\langtabl_current.txt
copy scripttabl.txt ..\scripttabl_current.txt
copy synonymtabl.txt ..\synonymtabl_current.txt
+12
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."
+11
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"
+13 -3
View File
@@ -17,7 +17,7 @@ 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;batik;Batak;6.0;2010-07-23
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
@@ -31,6 +31,7 @@ Cans;440;Unified Canadian Aboriginal Syllabics;syllabaire autochtone canadien un
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
@@ -49,6 +50,7 @@ Egyp;050;Egyptian hieroglyphs;hiéroglyphes égyptiens;Egyptian_Hieroglyphs;5.2;
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
@@ -58,6 +60,7 @@ 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
@@ -81,7 +84,7 @@ Jpan;413;Japanese (alias for Han + Hiragana + Katakana);japonais (alias pour han
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;;;2021-12-03
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
@@ -90,6 +93,7 @@ Kits;288;Khitan small script;petite écriture khitan;Khitan_Small_Script;13.0;20
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
@@ -123,7 +127,7 @@ 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;;;2021-12-03
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
@@ -134,6 +138,7 @@ 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
@@ -169,6 +174,7 @@ 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
@@ -189,6 +195,7 @@ 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
@@ -198,7 +205,10 @@ 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
@@ -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
@@ -30,6 +30,7 @@ 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)
@@ -45,14 +46,26 @@ for line in io.lines(codeFileName) do
scname = scname:gsub("'", "''")
if scalias == "" then
scalias = "-"
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 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()
@@ -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()
@@ -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()
@@ -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()
@@ -55,7 +55,7 @@ for line in io.lines(codeFileName) do
end
end
end
print("Number of countries=" .. count)
print(" Number of countries = " .. count)
fo1:write('commit;\n')
fo1:close()
@@ -41,8 +41,8 @@ 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|অসমীা (ভাৰত)|অসমীা|ভাৰত
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
@@ -56,8 +56,8 @@ 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|Беларуская (Беларусь)|Беларуская|Беларусь
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
@@ -72,8 +72,8 @@ bm-Latn-ML|Bamanankan (Latin, Mali)|Bamanankan (Latin)|Mali|Latn;|MLI|XOF|0|1000
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|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
@@ -106,7 +106,7 @@ cgg-UG|Chiga (Uganda)|Chiga|Uganda|Latn;|UGA|UGX|0|1000|Rukiga (Uganda)|Rukiga|U
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|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
@@ -293,8 +293,9 @@ eu-ES|Basque (Basque)|Basque|Spain|Latn;|ESP|EUR|0|042d|euskara (euskara)|euskar
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 (Latin)|Fulah (Latin)|Senegal|Latn;|SEN|XOF|0|0867|Pulaar|Pulaar|Senegaal
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|𞤆𞤵𞤤𞤢𞤪 (𞤑𞤢𞤥𞤢𞤪𞤵𞥅𞤲)|𞤆𞤵𞤤𞤢𞤪|𞤑𞤢𞤥𞤢𞤪𞤵𞥅𞤲
@@ -410,15 +411,15 @@ 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|HRK|0|041a|hrvatski|hrvatski|Hrvatska
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|HRK|0|041a|hrvatski (Hrvatska)|hrvatski|Hrvatska
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|Հայերեն (Հայաստան)|Հայերեն|Հայաստան
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
@@ -427,8 +428,8 @@ id|Indonesian|Indonesian|Indonesia|Latn;|IDN|IDR|0|0421|Indonesia|Indonesia|Indo
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|ꆈꌠꁱꂷ (ꍏꉸꏓꂱꇭꉼꇩ)|ꆈꌠꁱꂷ|ꍏꉸꏓꂱꇭꉼꇩ
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
@@ -483,14 +484,14 @@ 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 (Latin)|Kanuri (Latin)|Nigeria|Latn;|NGA|NGN|0|0471|Kanuri|Kanuri|Nigeria
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, India)|Kashmiri (Devanagari)|India|Deva;|IND|INR|0|0860|कॉशुर (India)|कॉशुर|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
@@ -562,11 +563,11 @@ 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 (Bangla)|Manipuri (Bangla)|India|Beng;|IND|INR|0|0458|মৈতৈলোন্|মৈতৈলোন্|ইন্দিয়া
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|Kanienkéha|Kanienkéha|Canada
moh-CA|Mohawk (Mohawk)|Mohawk|Canada|Latn;|CAN|CAD|0|047c|Kanien'kéha|Kanienkéha|Canada
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
@@ -620,13 +621,13 @@ 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
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|ଓିଆ (ଭାରତ)|ଓିଆ|ଭାରତ
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|ирон (Уӕрӕсе)|ирон|Уӕрӕсе
@@ -644,8 +645,6 @@ 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
prs|Dari|Dari|Afghanistan|Arab;|AFG|AFN|1|048c|درى|درى|افغانستان
prs-AF|Dari (Afghanistan)|Dari|Afghanistan|Arab;|AFG|AFN|1|048c|درى (افغانستان)|درى|افغانستان
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|پښتو (پاکستان)|پښتو|پاکستان
@@ -662,9 +661,9 @@ pt-MZ|Portuguese (Mozambique)|Portuguese|Mozambique|Latn;|MOZ|MZN|0|1000|portugu
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'|K'iche'|Guatemala|Latn;|GTM|GTQ|0|0486|K'iche'|K'iche'|Guatemala
quc-Latn-GT|K'iche' (Guatemala)|K'iche'|Guatemala|Latn;|GTM|GTQ|0|0486|K'iche' (Guatemala)|K'iche'|Guatemala
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
@@ -689,8 +688,8 @@ rw|Kinyarwanda|Kinyarwanda|Rwanda|Latn;|RWA|RWF|0|0487|Kinyarwanda|Kinyarwanda|U
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|संस्कृत (भारतम्)|संस्कृत|भारतम्
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
@@ -801,20 +800,20 @@ 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
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|Turkey|Latn;|TUR|TRY|0|041f|Türkçe|Türkçe|Türkiye
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 (Turkey)|Turkish|Turkey|Latn;|TUR|TRY|0|041f|Türkçe (Türkiye)|Türkçe|Türkiye
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|Татар (Россия)|Татар|Россия
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
@@ -829,9 +828,9 @@ 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|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|اُردو (پاکستان)|اُردو|پاکستان
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|اوزبیک (افغانستان)|اوزبیک|افغانستان
@@ -846,8 +845,8 @@ 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
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
@@ -153,8 +153,6 @@ end
script2alias = scriptmap();
locid2wxid = initmap()
fo2 = io.open('temp/langtabl_test.txt','w')
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')
@@ -217,7 +215,7 @@ for line in io.lines(codeFileName) do
ENGLISHDISPLAYNAME = ENGLISHDISPLAYNAME:gsub("'", "''")
ENGLISHDISPLAYNAMEHEX = string.tohex(ENGLISHDISPLAYNAME)
if ENGLISHDISPLAYNAME ~= ENGLISHDISPLAYNAMEHEX then
print('*** ' .. locid .. ' - Display name contains non-ASCII characters')
print(' +++ Warning: ' .. locid .. ' - Display name contains non-ASCII characters')
end
ENGLISHLANGUAGENAME = values[3]
ENGLISHLANGUAGENAME = ENGLISHLANGUAGENAME:gsub("'", "''")
@@ -335,46 +333,43 @@ for line in io.lines(codeFileName) do
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")
fo2:write(SWXNAME .. " " .. slocid .. " " .. sidlang .. " " .. sidsublang .. " " .. LAYOUT .. ' "' .. ENGLISHDISPLAYNAMEHEX .. '","' .. NATIVEDISPLAYNAMEHEX .. '"\n')
count = count + 1
end
end
-- Add manually entries for compatibility with prior wxWidgets versions
fo1:write("insert into win_localetable values ('ab', 'ab', 'wxLANGUAGE_ABKHAZIAN', '-', '-', 'Abkhazian', 'Abkhazian', '', '', '', '', '', 'LTR', '-', '-', 'аҧсуа бызшәа', 'аҧсуа бызшәа', '', '" .. string.tohex('аҧсуа бызшәа') .. "', '" .. string.tohex('аҧсуа бызшәа') .. "', '');\n")
fo1:write("insert into win_localetable values ('ay', 'ay', 'wxLANGUAGE_AYMARA', '-', '-', 'Aymara', 'Aymara', '', '', '', '', '', 'LTR', '-', '-', 'Aymara', 'Aymara', '', 'Aymara', 'Aymara', '');\n")
fo1:write("insert into win_localetable values ('bh', 'bh', 'wxLANGUAGE_BIHARI', '-', '-', 'Bihari', 'Bihari', '', '', '', '', '', 'LTR', '-', '-', 'Bihari', 'Bihari', '', 'Bihari', 'Bihari', '');\n")
fo1:write("insert into win_localetable values ('bi', 'bi', 'wxLANGUAGE_BISLAMA', '-', '-', 'Bislama', 'Bislama', '', '', '', '', '', 'LTR', '-', '-', 'Bislama', 'Bislama', 'Vanuatu', 'Bislama', 'Bislama', 'Vanuatu');\n")
fo1:write("insert 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 ('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 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 into win_localetable values ('ie', 'ie', 'wxLANGUAGE_INTERLINGUE', '-', '-', 'Interlingue', 'Interlingue', '', '', '', '', '', 'LTR', '-', '-', 'Interlingue', 'Interlingue', '', 'Interlingue', 'Interlingue', '');\n")
fo1:write("insert into win_localetable values ('ik', 'ik', 'wxLANGUAGE_INUPIAK', '-', '-', 'Inupiak', 'Inupiak', '', '', '', '', '', 'LTR', '-', '-', 'Inupiaq', 'Inupiaq', '', 'Inupiaq', 'Inupiaq', '');\n")
fo1:write("insert 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 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 ('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 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 into win_localetable values ('mo', 'mo', 'wxLANGUAGE_MOLDAVIAN', '-', '-', 'Moldavian', 'Moldavian', '', '', '', '', '', 'LTR', '-', '-', 'лимба молдовеняскэ', 'лимба молдовеняскэ', '', '" .. string.tohex('лимба молдовеняскэ') .. "', '" .. string.tohex('лимба молдовеняскэ') .. "', '');\n")
fo1:write("insert into win_localetable values ('na', 'na', 'wxLANGUAGE_NAURU', '-', '-', 'Nauru', 'Nauru', 'Nauru', '', '', '', '', 'LTR', '-', '-', 'Nauru', 'Nauru', 'Nauru', 'Nauru', 'Nauru', 'Nauru');\n")
fo1:write("insert into win_localetable values ('qu', 'qu', 'wxLANGUAGE_QUECHUA_MACRO', '-', '-', 'Quechua', 'Quechua', '', '', '', '', '', 'LTR', '-', '-', 'Qhichwa', 'Qhichwa', '', 'Qhichwa', 'Qhichwa', '');\n")
fo1:write("insert 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 ('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 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 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 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 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 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 ('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 into win_localetable values ('tl-PH', 'tl_PH', 'wxLANGUAGE_TAGALOG', '-', '-', 'Tagalog', 'Tagalog', 'Philippines', '', '', '', '', 'LTR', '-', '-', 'Tagalog', 'Tagalog', 'Pilipinas ', 'Tagalog', 'Tagalog', 'Pilipinas');\n")
fo1:write("insert into win_localetable values ('tw', 'tw', 'wxLANGUAGE_TWI', '-', '-', 'Twi', 'Twi', '', '', '', '', '', 'LTR', '-', '-', 'Twi', 'Twi', 'Ghana', 'Twi', 'Twi', 'Ghana');\n")
fo1:write("insert into win_localetable values ('za', 'za', 'wxLANGUAGE_ZHUANG', '-', '-', 'Zhuang', 'Zhuang', '', '', '', '', '', 'LTR', '-', '-', 'Zhuang', 'Zhuang', 'China', 'Zhuang', 'Zhuang', 'China');\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 + 23
print("Number of locales=" .. count)
count = count + 24
print(" Number of locales = " .. count)
fo1:write('commit;\n')
fo1:close()
fo2:close()
+1 -1
View File
@@ -19,7 +19,7 @@ for line in io.lines(codeFileName) do
fo2:write("insert into wx_langmap values ('" .. wxlangname .. "', '" .. wxlangid .. "', '" .. wxlocregion .. "', '" .. wxversion .. "');\n")
count = count + 1
end
print("Number of languages =" .. count)
print(" Number of languages = " .. count)
fo2:write('commit;\n')
fo2:close()
@@ -39,7 +39,7 @@ for line in io.lines(codeFileName) do
count = count + 1
end
end
print("Number of synonyms=" .. count)
print(" Number of synonyms = " .. count)
fo2:write('commit;\n')
fo2:close()
+1 -1
View File
@@ -25,7 +25,7 @@ for line in io.lines(codeFileName) do
end
end
wxversion = vmajor .. "." .. vminor .. "." .. vrelno
print("wx version number=" .. wxversion)
print(" wxWidgets version number:", wxversion)
fo2:write("insert into wx_version values('" .. wxversion .. "');\n")
fo2:write('commit;\n')
+225 -49
View File
@@ -10,6 +10,48 @@ import os
import string
import sys
def ReadRegionGroupTable():
regiongrouptable = []
try:
f = open('misc/languages/regiongrouptabl.txt')
except:
print("Did you run the script from top-level wxWidgets directory?")
raise
for i in f.readlines():
ispl = i.split()
regiongrouptable.append((ispl[0], ispl[1]))
f.close()
return regiongrouptable
def ReadMatchingTable():
matchingtable = []
try:
f = open('misc/languages/matchingtabl.txt')
except:
print("Did you run the script from top-level wxWidgets directory?")
raise
for i in f.readlines():
ispl = i.split()
matchingtable.append((ispl[0], ispl[1], ispl[2]))
f.close()
return matchingtable
def ReadLikelyTable():
likelytable = []
try:
f = open('misc/languages/likelytabl.txt')
except:
print("Did you run the script from top-level wxWidgets directory?")
raise
for i in f.readlines():
ispl = i.split()
likelytable.append((ispl[0], ispl[1]))
f.close()
return likelytable
def ReadScriptTable():
scripttable = []
try:
@@ -54,7 +96,7 @@ def ReadTable():
# Kind may be "include" or "interface".
def WriteEnum(f, table, synonymtable, scripttable, kind = 'include'):
def WriteEnum(f, table, synonymtable, kind = 'include'):
f.write("""
enum wxLanguage
{
@@ -105,13 +147,88 @@ enum wxLanguage
output += '};\n\n'
f.write(output)
def WriteTable(f, table, synonymtable, scripttable):
sctable = ''
for i in scripttable:
scname = '"%s"' % i[0]
scalias = '"%s"' % i[1]
sctable += ' { %s, %s },\n' % (scname, scalias)
def WriteTable(f, table, synonymtable):
f.write("""
// The following data tables are generated by misc/languages/genlang.py
// When making changes, please put them into misc/languages/langtabl.txt
#if !defined(__WIN32__)
#define SETWINLANG(info,lang,sublang)
#else
#define SETWINLANG(info,lang,sublang) \\
info.WinLang = tabLangData[j].lang; \\
info.WinSublang = tabLangData[j].sublang;
#endif // __WIN32__
// Include actual data tables
#include "wx/private/lang_info.h"
#include "wx/private/lang_scripts.h"
#include "wx/private/lang_likely.h"
#include "wx/private/lang_match.h"
#include "wx/private/lang_regions.h"
void wxUILocaleImpl::InitLanguagesDB()
{
wxLanguageInfo info;
int j;
// Known languages
for (j = 0; tabLangData[j].wxlang != 0; ++j)
{
info.Language = tabLangData[j].wxlang;
info.LocaleTag = tabLangData[j].bcp47tag;
info.CanonicalName = tabLangData[j].canonical;
info.CanonicalRef = tabLangData[j].canonicalref;
info.LayoutDirection = tabLangData[j].layout;
info.Description = wxString::FromUTF8(tabLangData[j].desc);
info.DescriptionNative = wxString::FromUTF8(tabLangData[j].descnative);
SETWINLANG(info, winlang, winsublang)
wxUILocale::AddLanguage(info);
}
// Known language scripts
for (j = 0; tabScriptData[j].scname; ++j)
{
gs_scmap_name2alias[tabScriptData[j].scname] = tabScriptData[j].scalias;
gs_scmap_alias2name[tabScriptData[j].scalias] = tabScriptData[j].scname;
}
// Known likely subtags
for (j = 0; tabLikelyData[j].tagfrom; ++j)
{
gs_likely_subtags_map[tabLikelyData[j].tagfrom] = tabLikelyData[j].tagto;
}
// Known matching language tags
for (j = 0; tabMatchData[j].matchkey; ++j)
{
gs_matching_tags_map[tabMatchData[j].matchkey] = tabMatchData[j].matchval;
}
// Known region groups
wxString langPrev;
wxString lang;
std::unordered_set<wxString>* regionGroup = nullptr;
for (j = 0; regionGroupData[j].language; ++j)
{
lang = regionGroupData[j].language;
if (!langPrev.IsSameAs(lang))
{
langPrev = lang;
gs_region_groups_map[lang] = std::unordered_set<wxString>();
regionGroup = &gs_region_groups_map[lang];
}
regionGroup->insert(regionGroupData[j].country);
}
}
""" )
def WriteInfoTable(f, table, synonymtable):
lngtable = ''
for i in table:
@@ -137,18 +254,6 @@ def WriteTable(f, table, synonymtable, scripttable):
// The following data tables are generated by misc/languages/genlang.py
// When making changes, please put them into misc/languages/langtabl.txt
#if !defined(__WIN32__)
#define SETWINLANG(info,lang,sublang)
#else
#define SETWINLANG(info,lang,sublang) \\
info.WinLang = tabLangData[j].lang; \\
info.WinSublang = tabLangData[j].sublang;
#endif // __WIN32__
// Data table for known languages
static const struct langData_t
{
@@ -167,6 +272,19 @@ tabLangData[] =
%s
{ 0, nullptr, nullptr, nullptr, 0, 0, wxLayout_Default, nullptr, nullptr }
};
""" % (lngtable))
def WriteScriptTable(f, scripttable, synonymtable):
sctable = ''
for i in scripttable:
scname = '"%s"' % i[0]
scalias = '"%s"' % i[1]
sctable += ' { %s, %s },\n' % (scname, scalias)
f.write("""
// The following data tables are generated by misc/languages/genlang.py
// When making changes, please put them into misc/languages/scripttabl.txt
// Data table for known language scripts
static const struct scriptData_t
@@ -179,38 +297,83 @@ tabScriptData[] =
%s
{ nullptr, nullptr }
};
""" % (sctable))
void wxUILocale::InitLanguagesDB()
def WriteLikelyTable(f, likelytable, synonymtable):
tagtable = ''
for i in likelytable:
tagfrom = '"%s"' % i[0]
tagto = '"%s"' % i[1]
tagtable += ' { %-11s %s },\n' % (tagfrom+',', tagto)
f.write("""
// The following data tables are generated by misc/languages/genlang.py
// When making changes, please put them into misc/languages/likelytabl.txt
// Data table for likely subtags
static const struct likelyData_t
{
wxLanguageInfo info;
int j;
// Known languages
for (j = 0; tabLangData[j].wxlang != 0; ++j)
{
info.Language = tabLangData[j].wxlang;
info.LocaleTag = tabLangData[j].bcp47tag;
info.CanonicalName = tabLangData[j].canonical;
info.CanonicalRef = tabLangData[j].canonicalref;
info.LayoutDirection = tabLangData[j].layout;
info.Description = wxString::FromUTF8(tabLangData[j].desc);
info.DescriptionNative = wxString::FromUTF8(tabLangData[j].descnative);
SETWINLANG(info, winlang, winsublang)
AddLanguage(info);
}
// Known language scripts
for (j = 0; tabScriptData[j].scname; ++j)
{
gs_scmap_name2alias[tabScriptData[j].scname] = tabScriptData[j].scalias;
gs_scmap_alias2name[tabScriptData[j].scalias] = tabScriptData[j].scname;
}
const char* tagfrom;
const char* tagto;
}
tabLikelyData[] =
{
%s
{ nullptr, nullptr }
};
""" % (tagtable))
""" % (lngtable,sctable))
def WriteMatchingTable(f, matchingtable, synonymtable):
matchtable = ''
for i in matchingtable:
matchkey = '"%s:%s"' % (i[0], i[1])
matchval = '%3s' % i[2]
matchtable += ' { %-20s %s },\n' % (matchkey+',', matchval)
f.write("""
// The following data tables are generated by misc/languages/genlang.py
// When making changes, please put them into misc/languages/matchingtabl.txt
// Data table for matching languages
static const struct matchData_t
{
const char* matchkey;
int matchval;
}
tabMatchData[] =
{
%s
{ nullptr, 0 }
};
""" % (matchtable))
def ReplaceGeneratedPartOfFile(fname, func):
def WriteRegionsTable(f, regiongrouptable, synonymtable):
regiongrptable = ''
for i in regiongrouptable:
rg_language = '"%s"' % i[0]
rg_country = '"%s"' % i[1]
regiongrptable += ' { %-8s %s },\n' % (rg_language+',', rg_country)
f.write("""
// The following data tables are generated by misc/languages/genlang.py
// When making changes, please put them into misc/languages/regiongrouptabl.txt
// Data table for region groups
static const struct regionGroupData_t
{
const char* language;
const char* country;
}
regionGroupData[] =
{
%s
{ nullptr, nullptr }
};
""" % (regiongrptable))
def ReplaceGeneratedPartOfFile(fname, func, table1, table2):
"""
Replaces the part of file marked with the special comments with the
output of func.
@@ -218,6 +381,8 @@ def ReplaceGeneratedPartOfFile(fname, func):
fname is the name of the input file and func must be a function taking
a file and language table on input and writing the appropriate chunk to
this file, e.g. WriteEnum or WriteTable.
table1 and table2 are data tables that are passed to func.
"""
fin = open(fname, 'rt')
fnameNew = fname + '.new'
@@ -230,7 +395,7 @@ def ReplaceGeneratedPartOfFile(fname, func):
print('Unexpected starting comment.')
betweenBeginAndEnd = 1
fout.write(l)
func(fout, table, synonymtable, scripttable)
func(fout, table1, table2)
elif l == '// --- --- --- generated code ends here --- --- ---\n':
if not betweenBeginAndEnd:
print('End comment found before the starting one?')
@@ -252,9 +417,20 @@ def ReplaceGeneratedPartOfFile(fname, func):
os.remove(fname)
os.rename(fnameNew, fname)
dummytable = []
table = ReadTable()
scripttable = ReadScriptTable()
synonymtable = ReadSynonymTable()
ReplaceGeneratedPartOfFile('include/wx/language.h', WriteEnum)
ReplaceGeneratedPartOfFile('interface/wx/language.h', lambda f, table, synonymtable, scripttable: WriteEnum(f, table, synonymtable, scripttable, 'interface'))
ReplaceGeneratedPartOfFile('src/common/languageinfo.cpp', WriteTable)
likelytable = ReadLikelyTable()
matchingtable = ReadMatchingTable()
regiongrouptable = ReadRegionGroupTable()
ReplaceGeneratedPartOfFile('include/wx/language.h', WriteEnum, table, synonymtable)
ReplaceGeneratedPartOfFile('interface/wx/language.h', lambda f, table1, table2: WriteEnum(f, table1, table2, 'interface'), table, synonymtable)
ReplaceGeneratedPartOfFile('src/common/languageinfo.cpp', WriteTable, table, synonymtable)
ReplaceGeneratedPartOfFile('include/wx/private/lang_info.h', WriteInfoTable, table, synonymtable)
ReplaceGeneratedPartOfFile('include/wx/private/lang_scripts.h', WriteScriptTable, scripttable, dummytable)
ReplaceGeneratedPartOfFile('include/wx/private/lang_likely.h', WriteLikelyTable, likelytable, dummytable)
ReplaceGeneratedPartOfFile('include/wx/private/lang_match.h', WriteMatchingTable, matchingtable, dummytable)
ReplaceGeneratedPartOfFile('include/wx/private/lang_regions.h', WriteRegionsTable, regiongrouptable, dummytable)
+38 -38
View File
@@ -45,10 +45,10 @@ wxLANGUAGE_ARABIC_TUNISIA - ar-TN
wxLANGUAGE_ARABIC_UAE - ar-AE ar_AE - 0x01 0x0e RTL "Arabic (United Arab Emirates)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\245\331\205\330\247\330\261\330\247\330\252 \330\247\331\204\330\271\330\261\330\250\331\212\330\251 \330\247\331\204\331\205\330\252\330\255\330\257\330\251)"
wxLANGUAGE_ARABIC_WORLD 3.1.6 ar-001 ar_001 - 0x00 0x04 RTL "Arabic (World)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\271\330\247\331\204\331\205)"
wxLANGUAGE_ARABIC_YEMEN - ar-YE ar_YE - 0x01 0x09 RTL "Arabic (Yemen)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\331\212\331\205\331\206)"
wxLANGUAGE_ARMENIAN - hy hy hy_AM 0x2b 0x01 LTR "Armenian","\325\200\325\241\325\265\325\245\326\200\325\245\325\266"
wxLANGUAGE_ARMENIAN_ARMENIA 3.1.6 hy-AM hy_AM - 0x2b 0x01 LTR "Armenian (Armenia)","\325\200\325\241\325\265\325\245\326\200\325\245\325\266 (\325\200\325\241\325\265\325\241\325\275\325\277\325\241\325\266)"
wxLANGUAGE_ASSAMESE - as as as_IN 0x4d 0x01 LTR "Assamese","\340\246\205\340\246\270\340\246\256\340\247\200\340\247\237\340\246\276"
wxLANGUAGE_ASSAMESE_INDIA 3.1.6 as-IN as_IN - 0x4d 0x01 LTR "Assamese (India)","\340\246\205\340\246\270\340\246\256\340\247\200\340\247\237\340\246\276 (\340\246\255\340\246\276\340\247\260\340\246\244)"
wxLANGUAGE_ARMENIAN - hy hy hy_AM 0x2b 0x01 LTR "Armenian","\325\260\325\241\325\265\325\245\326\200\325\245\325\266"
wxLANGUAGE_ARMENIAN_ARMENIA 3.1.6 hy-AM hy_AM - 0x2b 0x01 LTR "Armenian (Armenia)","\325\260\325\241\325\265\325\245\326\200\325\245\325\266 (\325\200\325\241\325\265\325\241\325\275\325\277\325\241\325\266)"
wxLANGUAGE_ASSAMESE - as as as_IN 0x4d 0x01 LTR "Assamese","\340\246\205\340\246\270\340\246\256\340\247\200\340\246\257\340\246\274\340\246\276"
wxLANGUAGE_ASSAMESE_INDIA 3.1.6 as-IN as_IN - 0x4d 0x01 LTR "Assamese (India)","\340\246\205\340\246\270\340\246\256\340\247\200\340\246\257\340\246\274\340\246\276 (\340\246\255\340\246\276\340\247\260\340\246\244)"
wxLANGUAGE_ASTURIAN 3.0.0 ast ast ast_ES 0x00 0x04 LTR "Asturian","asturianu"
wxLANGUAGE_ASTURIAN_SPAIN 3.1.6 ast-ES ast_ES - 0x00 0x04 LTR "Asturian (Spain)","asturianu (Espa\303\261a)"
wxLANGUAGE_ASU 3.1.6 asa asa asa_TZ 0x00 0x04 LTR "Asu","Kipare"
@@ -73,8 +73,8 @@ wxLANGUAGE_BASHKIR - ba
wxLANGUAGE_BASHKIR_RUSSIA 3.1.6 ba-RU ba_RU - 0x6d 0x01 LTR "Bashkir (Russia)","\320\221\320\260\321\210\322\241\320\276\321\200\321\202 (\320\240\323\231\321\201\323\231\320\271)"
wxLANGUAGE_BASQUE - eu eu eu_ES 0x2d 0x01 LTR "Basque","euskara"
wxLANGUAGE_BASQUE_SPAIN 3.1.6 eu-ES eu_ES - 0x2d 0x01 LTR "Basque (Basque)","euskara (euskara)"
wxLANGUAGE_BELARUSIAN - be be be_BY 0x23 0x01 LTR "Belarusian","\320\221\320\265\320\273\320\260\321\200\321\203\321\201\320\272\320\260\321\217"
wxLANGUAGE_BELARUSIAN_BELARUS 3.1.6 be-BY be_BY - 0x23 0x01 LTR "Belarusian (Belarus)","\320\221\320\265\320\273\320\260\321\200\321\203\321\201\320\272\320\260\321\217 (\320\221\320\265\320\273\320\260\321\200\321\203\321\201\321\214)"
wxLANGUAGE_BELARUSIAN - be be be_BY 0x23 0x01 LTR "Belarusian","\320\261\320\265\320\273\320\260\321\200\321\203\321\201\320\272\320\260\321\217"
wxLANGUAGE_BELARUSIAN_BELARUS 3.1.6 be-BY be_BY - 0x23 0x01 LTR "Belarusian (Belarus)","\320\261\320\265\320\273\320\260\321\200\321\203\321\201\320\272\320\260\321\217 (\320\221\320\265\320\273\320\260\321\200\321\203\321\201\321\214)"
wxLANGUAGE_BEMBA 3.1.6 bem bem bem_ZM 0x00 0x04 LTR "Bemba","Ichibemba"
wxLANGUAGE_BEMBA_ZAMBIA 3.1.6 bem-ZM bem_ZM - 0x00 0x04 LTR "Bemba (Zambia)","Ichibemba (Zambia)"
wxLANGUAGE_BENA 3.1.6 bez bez bez_TZ 0x00 0x04 LTR "Bena","Hibena"
@@ -142,7 +142,7 @@ wxLANGUAGE_COLOGNIAN 3.1.6 ksh
wxLANGUAGE_COLOGNIAN_GERMANY 3.1.6 ksh-DE ksh_DE - 0x00 0x04 LTR "Colognian (Germany)","K\303\266lsch (Do\303\274tschland)"
wxLANGUAGE_CORNISH 3.1.6 kw kw kw_GB 0x00 0x04 LTR "Cornish","kernewek"
wxLANGUAGE_CORNISH_UK 3.1.6 kw-GB kw_GB - 0x00 0x04 LTR "Cornish (United Kingdom)","kernewek (Rywvaneth Unys)"
wxLANGUAGE_CORSICAN - co co co_FR 0x83 0x01 LTR "Corsican","Corsu"
wxLANGUAGE_CORSICAN - co co co_FR 0x83 0x01 LTR "Corsican","corsu"
wxLANGUAGE_CORSICAN_FRANCE 3.1.6 co-FR co_FR - 0x83 0x01 LTR "Corsican (France)","Corsu (Francia)"
wxLANGUAGE_CROATIAN - hr hr hr_HR 0x1a 0x01 LTR "Croatian","hrvatski"
wxLANGUAGE_CROATIAN_BOSNIA_AND_HERZEGOVINA 3.1.6 hr-BA hr_BA - 0x1a 0x04 LTR "Croatian (Bosnia and Herzegovina)","hrvatski (Bosna i Hercegovina)"
@@ -152,8 +152,6 @@ wxLANGUAGE_CZECH_CZECHIA 3.1.6 cs-CZ
wxLANGUAGE_DANISH - da da da_DK 0x06 0x01 LTR "Danish","dansk"
wxLANGUAGE_DANISH_DENMARK 3.1.6 da-DK da_DK - 0x06 0x01 LTR "Danish (Denmark)","dansk (Danmark)"
wxLANGUAGE_DANISH_GREENLAND 3.1.6 da-GL da_GL - 0x00 0x04 LTR "Danish (Greenland)","dansk (Gr\303\270nland)"
wxLANGUAGE_DARI 3.1.6 prs prs prs_AF 0x8c 0x01 RTL "Dari","\330\257\330\261\331\211"
wxLANGUAGE_DARI_AFGHANISTAN 3.1.6 prs-AF prs_AF - 0x8c 0x01 RTL "Dari (Afghanistan)","\330\257\330\261\331\211 (\330\247\331\201\330\272\330\247\331\206\330\263\330\252\330\247\331\206)"
wxLANGUAGE_DIVEHI 3.1.6 dv dv dv_MV 0x65 0x01 RTL "Divehi","\336\213\336\250\336\210\336\254\336\200\336\250\336\204\336\246\336\220\336\260"
wxLANGUAGE_DIVEHI_MALDIVES 3.1.6 dv-MV dv_MV - 0x65 0x01 RTL "Divehi (Maldives)","\336\213\336\250\336\210\336\254\336\200\336\250\336\204\336\246\336\220\336\260 (\336\213\336\250\336\210\336\254\336\200\336\250 \336\203\336\247\336\207\336\260\336\226\336\254)"
wxLANGUAGE_DOGRI 3.3.0 doi doi - 0x00 0x04 LTR "Dogri","\340\244\241\340\245\213\340\244\227\340\244\260\340\245\200"
@@ -352,7 +350,7 @@ wxLANGUAGE_FRISIAN - fy
wxLANGUAGE_FRISIAN_NETHERLANDS 3.1.6 fy-NL fy_NL - 0x62 0x01 LTR "Western Frisian (Netherlands)","Frysk (Nederl\303\242n)"
wxLANGUAGE_FRIULIAN 3.1.6 fur fur fur_IT 0x00 0x04 LTR "Friulian","furlan"
wxLANGUAGE_FRIULIAN_ITALY 3.1.6 fur-IT fur_IT - 0x00 0x04 LTR "Friulian (Italy)","furlan (Italie)"
wxLANGUAGE_FULAH 3.1.6 ff ff - 0x67 0x02 LTR "Fulah (Latin)","Pulaar"
wxLANGUAGE_FULAH 3.1.6 ff ff - 0x67 0x02 LTR "Fulah","Pulaar"
wxLANGUAGE_FULAH_ADLAM 3.3.0 ff-Adlm ff@adlam - 0x00 0x04 LTR "Fulah (Adlam)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\200\360\236\244\201\360\236\244\202\360\236\244\242\360\236\244\203)"
wxLANGUAGE_FULAH_ADLAM_BURKINA_FASO 3.3.0 ff-Adlm-BF ff_BF@adlam - 0x00 0x04 LTR "Fulah (Adlam, Burkina Faso)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\204\360\236\244\265\360\236\244\252\360\236\244\263\360\236\244\255\360\236\244\262\360\236\244\242 \360\236\244\212\360\236\244\242\360\236\244\247\360\236\244\256\360\236\245\205)"
wxLANGUAGE_FULAH_ADLAM_CAMEROON 3.3.0 ff-Adlm-CM ff_CM@adlam - 0x00 0x04 LTR "Fulah (Adlam, Cameroon)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\221\360\236\244\242\360\236\244\245\360\236\244\242\360\236\244\252\360\236\244\265\360\236\245\205\360\236\244\262)"
@@ -463,22 +461,22 @@ wxLANGUAGE_KAMBA 3.1.6 kam
wxLANGUAGE_KAMBA_KENYA 3.1.6 kam-KE kam_KE - 0x00 0x04 LTR "Kamba (Kenya)","Kikamba (Kenya)"
wxLANGUAGE_KANNADA - kn kn kn_IN 0x4b 0x01 LTR "Kannada","\340\262\225\340\262\250\340\263\215\340\262\250\340\262\241"
wxLANGUAGE_KANNADA_INDIA 3.1.6 kn-IN kn_IN - 0x4b 0x01 LTR "Kannada (India)","\340\262\225\340\262\250\340\263\215\340\262\250\340\262\241 (\340\262\255\340\262\276\340\262\260\340\262\244)"
wxLANGUAGE_KANURI 3.1.6 kr kr - 0x71 0x01 LTR "Kanuri (Latin)","Kanuri"
wxLANGUAGE_KANURI 3.1.6 kr kr - 0x71 0x01 LTR "Kanuri","Kanuri"
wxLANGUAGE_KANURI_LATIN 3.1.6 kr-Latn kr@latin - 0x71 0x01 LTR "Kanuri (Latin)","Kanuri"
wxLANGUAGE_KANURI_LATIN_NIGERIA 3.3.0 kr-Latn-NG kr_NG@latin - 0x71 0x01 LTR "Kanuri (Latin, Nigeria)","Kanuri (Nigeria)"
wxLANGUAGE_KASHMIRI - ks ks ks_IN 0x00 0x04 RTL "Kashmiri","\332\251\331\262\330\264\331\217\330\261"
wxLANGUAGE_KASHMIRI_ARABIC 3.3.0 ks-Arab ks@arabic - 0x00 0x04 RTL "Kashmiri (Arabic)","\332\251\331\262\330\264\331\217\330\261 (\330\247\331\216\330\261\330\250\333\214)"
wxLANGUAGE_KASHMIRI_ARABIC_INDIA 3.3.0 ks-Arab-IN ks_IN@arabic - 0x00 0x04 RTL "Kashmiri (Arabic)","\332\251\331\262\330\264\331\217\330\261 (\330\247\331\216\330\261\330\250\333\214)"
wxLANGUAGE_KASHMIRI_DEVANAGARI 3.1.6 ks-Deva ks@devanagari - 0x60 0x02 LTR "Kashmiri (Devanagari)","\340\244\225\340\245\211\340\244\266\340\245\201\340\244\260"
wxLANGUAGE_KASHMIRI_DEVANAGARI_INDIA 3.1.6 ks-Deva-IN ks_IN@devanagari - 0x60 0x02 LTR "Kashmiri (Devanagari, India)","\340\244\225\340\245\211\340\244\266\340\245\201\340\244\260 (India)"
wxLANGUAGE_KASHMIRI_DEVANAGARI_INDIA 3.1.6 ks-Deva-IN ks_IN@devanagari - 0x60 0x02 LTR "Kashmiri (Devanagari)","\340\244\225\340\245\211\340\244\266\340\245\201\340\244\260 (India)"
wxLANGUAGE_KASHMIRI_INDIA - ks-IN ks_IN - 0x00 0x04 RTL "Kashmiri (India)","\332\251\330\264\331\210\330\261 (\330\250\332\276\330\247\330\261\330\252)"
wxLANGUAGE_KAZAKH - kk kk kk_KZ 0x3f 0x01 LTR "Kazakh","\322\233\320\260\320\267\320\260\322\233 \321\202\321\226\320\273\321\226"
wxLANGUAGE_KAZAKH_KAZAKHSTAN 3.1.6 kk-KZ kk_KZ - 0x3f 0x01 LTR "Kazakh (Kazakhstan)","\322\233\320\260\320\267\320\260\322\233 \321\202\321\226\320\273\321\226 (\322\232\320\260\320\267\320\260\322\233\321\201\321\202\320\260\320\275)"
wxLANGUAGE_KHMER - km km km_KH 0x53 0x01 LTR "Khmer","\341\236\201\341\237\222\341\236\230\341\237\202\341\236\232"
wxLANGUAGE_KHMER_CAMBODIA 3.1.6 km-KH km_KH - 0x53 0x01 LTR "Khmer (Cambodia)","\341\236\201\341\237\222\341\236\230\341\237\202\341\236\232 (\341\236\200\341\236\230\341\237\222\341\236\226\341\236\273\341\236\207\341\236\266)"
wxLANGUAGE_KICHE 3.1.6 quc quc - 0x86 0x01 LTR "K'iche'","K'iche'"
wxLANGUAGE_KICHE_GUATEMALA 3.1.6 quc-Latn-GT quc_GT@latin - 0x86 0x01 LTR "K'iche' (Guatemala)","K'iche' (Guatemala)"
wxLANGUAGE_KICHE_LATIN 3.1.6 quc-Latn quc@latin - 0x86 0x01 LTR "K'iche'","K'iche'"
wxLANGUAGE_KICHE 3.1.6 quc quc - 0x86 0x01 LTR "K\312\274iche\312\274","K\312\274iche\312\274"
wxLANGUAGE_KICHE_LATIN 3.1.6 quc-Latn quc@latin - 0x86 0x01 LTR "K\312\274iche\312\274 (Latin)","K\312\274iche\312\274"
wxLANGUAGE_KICHE_LATIN_GUATEMALA 3.1.6 quc-Latn-GT quc_GT@latin - 0x86 0x01 LTR "K\312\274iche\312\274 (Latin, Guatemala)","K\312\274iche\312\274 (Guatemala)"
wxLANGUAGE_KIKUYU 3.1.6 ki ki ki_KE 0x00 0x04 LTR "Kikuyu","Gikuyu"
wxLANGUAGE_KIKUYU_KENYA 3.1.6 ki-KE ki_KE - 0x00 0x04 LTR "Kikuyu (Kenya)","Gikuyu (Kenya)"
wxLANGUAGE_KINYARWANDA - rw rw rw_RW 0x87 0x01 LTR "Kinyarwanda","Kinyarwanda"
@@ -552,7 +550,7 @@ wxLANGUAGE_MALAY_MALAYSIA - ms-MY
wxLANGUAGE_MALAY_SINGAPORE 3.1.6 ms-SG ms_SG - 0x00 0x04 LTR "Malay (Singapore)","Melayu (Singapura)"
wxLANGUAGE_MALTESE - mt mt mt_MT 0x3a 0x01 LTR "Maltese","Malti"
wxLANGUAGE_MALTESE_MALTA 3.1.6 mt-MT mt_MT - 0x3a 0x01 LTR "Maltese (Malta)","Malti (Malta)"
wxLANGUAGE_MANIPURI - mni mni mni_IN 0x58 0x01 LTR "Manipuri (Bangla)","\340\246\256\340\247\210\340\246\244\340\247\210\340\246\262\340\247\213\340\246\250\340\247\215"
wxLANGUAGE_MANIPURI - mni mni mni_IN 0x58 0x01 LTR "Manipuri","\340\246\256\340\247\210\340\246\244\340\247\210\340\246\262\340\247\213\340\246\250\340\247\215"
wxLANGUAGE_MANIPURI_BENGALI 3.3.0 mni-Beng mni@bengali - 0x58 0x01 LTR "Manipuri (Bangla)","\340\246\256\340\247\210\340\246\244\340\247\210\340\246\262\340\247\213\340\246\250\340\247\215"
wxLANGUAGE_MANIPURI_INDIA 3.1.6 mni-IN mni_IN - 0x58 0x01 LTR "Manipuri (Bangla, India)","\340\246\256\340\247\210\340\246\244\340\247\210\340\246\262\340\247\213\340\246\250\340\247\215 (\340\246\207\340\246\250\340\247\215\340\246\246\340\246\277\340\246\257\340\246\274\340\246\276)"
wxLANGUAGE_MANX 3.1.6 gv gv gv_IM 0x00 0x04 LTR "Manx","Gaelg"
@@ -572,8 +570,8 @@ wxLANGUAGE_MERU 3.1.6 mer
wxLANGUAGE_MERU_KENYA 3.1.6 mer-KE mer_KE - 0x00 0x04 LTR "Meru (Kenya)","K\304\251m\304\251r\305\251 (Kenya)"
wxLANGUAGE_META 3.1.6 mgo mgo mgo_CM 0x00 0x04 LTR "Meta\312\274","meta\312\274"
wxLANGUAGE_META_CAMEROON 3.1.6 mgo-CM mgo_CM - 0x00 0x04 LTR "Meta\312\274 (Cameroon)","meta\312\274 (Kamalun)"
wxLANGUAGE_MOHAWK 3.1.6 moh moh moh_CA 0x7c 0x01 LTR "Mohawk","Kanien\342\200\231k\303\251ha"
wxLANGUAGE_MOHAWK_CANADA 3.1.6 moh-CA moh_CA - 0x7c 0x01 LTR "Mohawk (Mohawk)","Kanien'k\303\251ha"
wxLANGUAGE_MOHAWK 3.1.6 moh moh moh_CA 0x7c 0x01 LTR "Mohawk","Kanien\312\274k\303\251ha"
wxLANGUAGE_MOHAWK_CANADA 3.1.6 moh-CA moh_CA - 0x7c 0x01 LTR "Mohawk (Canada)","Kanien\312\274k\303\251ha (Canada)"
wxLANGUAGE_MOLDAVIAN - mo mo - - - LTR "Moldavian","\320\273\320\270\320\274\320\261\320\260 \320\274\320\276\320\273\320\264\320\276\320\262\320\265\320\275\321\217\321\201\320\272\321\215"
wxLANGUAGE_MONGOLIAN - mn mn mn_MN 0x50 0x01 LTR "Mongolian","\320\234\320\276\320\275\320\263\320\276\320\273\302\240\321\205\321\215\320\273"
wxLANGUAGE_MONGOLIAN_CYRILLIC 3.1.6 mn-Cyrl mn@cyrillic - 0x50 0x01 LTR "Mongolian","\320\234\320\276\320\275\320\263\320\276\320\273\302\240\321\205\321\215\320\273 (\320\232\320\270\321\200\320\270\320\273\320\273 \322\257\321\201\321\215\320\263)"
@@ -615,10 +613,10 @@ wxLANGUAGE_NUER 3.1.6 nus
wxLANGUAGE_NUER_SOUTH_SUDAN 3.1.6 nus-SS nus_SS - 0x00 0x04 LTR "Nuer (South Sudan)","Thok Nath (South Sudan)"
wxLANGUAGE_NYANKOLE 3.1.6 nyn nyn nyn_UG 0x00 0x04 LTR "Nyankole","Runyankore"
wxLANGUAGE_NYANKOLE_UGANDA 3.1.6 nyn-UG nyn_UG - 0x00 0x04 LTR "Nyankole (Uganda)","Runyankore (Uganda)"
wxLANGUAGE_OCCITAN - oc oc oc_FR 0x82 0x01 LTR "Occitan","Occitan"
wxLANGUAGE_OCCITAN_FRANCE 3.1.6 oc-FR oc_FR - 0x82 0x01 LTR "Occitan (France)","Occitan (Fran\303\247a)"
wxLANGUAGE_ODIA 3.1.6 or or or_IN 0x48 0x01 LTR "Odia","\340\254\223\340\255\234\340\254\277\340\254\206"
wxLANGUAGE_ODIA_INDIA 3.1.6 or-IN or_IN - 0x48 0x01 LTR "Odia (India)","\340\254\223\340\255\234\340\254\277\340\254\206 (\340\254\255\340\254\276\340\254\260\340\254\244)"
wxLANGUAGE_OCCITAN - oc oc oc_FR 0x82 0x01 LTR "Occitan","occitan"
wxLANGUAGE_OCCITAN_FRANCE 3.1.6 oc-FR oc_FR - 0x82 0x01 LTR "Occitan (France)","occitan (Fran\303\247a)"
wxLANGUAGE_ODIA 3.1.6 or or or_IN 0x48 0x01 LTR "Odia","\340\254\223\340\254\241\340\254\274\340\254\277\340\254\206"
wxLANGUAGE_ODIA_INDIA 3.1.6 or-IN or_IN - 0x48 0x01 LTR "Odia (India)","\340\254\223\340\254\241\340\254\274\340\254\277\340\254\206 (\340\254\255\340\254\276\340\254\260\340\254\244)"
wxLANGUAGE_OROMO - om om om_ET 0x72 0x01 LTR "Oromo","Oromoo"
wxLANGUAGE_OROMO_ETHIOPIA 3.1.6 om-ET om_ET - 0x72 0x01 LTR "Oromo (Ethiopia)","Oromoo (Itoophiyaa)"
wxLANGUAGE_OROMO_KENYA 3.1.6 om-KE om_KE - 0x00 0x04 LTR "Oromo (Kenya)","Oromoo (Keeniyaa)"
@@ -631,6 +629,7 @@ wxLANGUAGE_PASHTO - ps
wxLANGUAGE_PASHTO_AFGHANISTAN 3.1.6 ps-AF ps_AF - 0x63 0x01 RTL "Pashto (Afghanistan)","\331\276\332\232\330\252\331\210 (\330\247\331\201\330\272\330\247\331\206\330\263\330\252\330\247\331\206)"
wxLANGUAGE_PASHTO_PAKISTAN 3.1.6 ps-PK ps_PK - 0x00 0x04 RTL "Pashto (Pakistan)","\331\276\332\232\330\252\331\210 (\331\276\330\247\332\251\330\263\330\252\330\247\331\206)"
wxLANGUAGE_PERSIAN - fa fa fa_IR 0x29 0x01 RTL "Persian","\331\201\330\247\330\261\330\263\333\214"
wxLANGUAGE_PERSIAN_AFGHANISTAN 3.3.0 fa-AF fa_AF - 0x8c 0x01 RTL "Persian (Afghanistan)","\331\201\330\247\330\261\330\263\333\214 (\330\247\331\201\330\272\330\247\331\206\330\263\330\252\330\247\331\206)"
wxLANGUAGE_PERSIAN_IRAN 3.1.6 fa-IR fa_IR - 0x29 0x01 RTL "Persian (Iran)","\331\201\330\247\330\261\330\263\333\214 (\330\247\333\214\330\261\330\247\331\206)"
wxLANGUAGE_POLISH - pl pl pl_PL 0x15 0x01 LTR "Polish","polski"
wxLANGUAGE_POLISH_POLAND 3.1.6 pl-PL pl_PL - 0x15 0x01 LTR "Polish (Poland)","polski (Polska)"
@@ -700,8 +699,8 @@ wxLANGUAGE_SANGHO - sg
wxLANGUAGE_SANGHO_CENTRAL_AFRICAN_REPUBLIC 3.1.6 sg-CF sg_CF - 0x00 0x04 LTR "Sango (Central African Republic)","S\303\244ng\303\266 (K\303\266d\303\266r\303\266s\303\252se t\303\256 B\303\252afr\303\256ka)"
wxLANGUAGE_SANGU 3.1.6 sbp sbp sbp_TZ 0x00 0x04 LTR "Sangu","Ishisangu"
wxLANGUAGE_SANGU_TANZANIA 3.1.6 sbp-TZ sbp_TZ - 0x00 0x04 LTR "Sangu (Tanzania)","Ishisangu (Tansaniya)"
wxLANGUAGE_SANSKRIT - sa sa sa_IN 0x4f 0x01 LTR "Sanskrit","\340\244\270\340\244\202\340\244\270\340\245\215\340\244\225\340\245\203\340\244\244"
wxLANGUAGE_SANSKRIT_INDIA 3.1.6 sa-IN sa_IN - 0x4f 0x01 LTR "Sanskrit (India)","\340\244\270\340\244\202\340\244\270\340\245\215\340\244\225\340\245\203\340\244\244 (\340\244\255\340\244\276\340\244\260\340\244\244\340\244\256\340\245\215)"
wxLANGUAGE_SANSKRIT - sa sa sa_IN 0x4f 0x01 LTR "Sanskrit","\340\244\270\340\244\202\340\244\270\340\245\215\340\244\225\340\245\203\340\244\244 \340\244\255\340\244\276\340\244\267\340\244\276"
wxLANGUAGE_SANSKRIT_INDIA 3.1.6 sa-IN sa_IN - 0x4f 0x01 LTR "Sanskrit (India)","\340\244\270\340\244\202\340\244\270\340\245\215\340\244\225\340\245\203\340\244\244 \340\244\255\340\244\276\340\244\267\340\244\276 (\340\244\255\340\244\276\340\244\260\340\244\244\340\244\203)"
wxLANGUAGE_SANTALI 3.3.0 sat sat - 0x00 0x04 LTR "Santali","\341\261\245\341\261\237\341\261\261\341\261\233\341\261\237\341\261\262\341\261\244"
wxLANGUAGE_SANTALI_OL_CHIKI 3.3.0 sat-Olck sat@ol_chiki - 0x00 0x04 LTR "Santali (Ol Chiki)","\341\261\245\341\261\237\341\261\261\341\261\233\341\261\237\341\261\262\341\261\244 (\341\261\232\341\261\236 \341\261\252\341\261\244\341\261\240\341\261\244)"
wxLANGUAGE_SANTALI_OL_CHIKI_INDIA 3.3.0 sat-Olck-IN sat_IN@ol_chiki - 0x00 0x04 LTR "Santali (Ol Chiki, India)","\341\261\245\341\261\237\341\261\261\341\261\233\341\261\237\341\261\262\341\261\244 (\341\261\244\341\261\261\341\261\260\341\261\244\341\261\255\341\261\237)"
@@ -813,7 +812,8 @@ wxLANGUAGE_TACHELHIT_LATIN 3.1.6 shi-Latn
wxLANGUAGE_TACHELHIT_LATIN_MOROCCO 3.1.6 shi-Latn-MA shi_MA@latin - 0x00 0x04 LTR "Tachelhit (Latin, Morocco)","Tashel\341\270\245iyt (lm\311\243rib)"
wxLANGUAGE_TACHELHIT_TIFINAGH 3.1.6 shi-Tfng shi@tifinagh - 0x00 0x04 LTR "Tachelhit (Tifinagh)","\342\265\234\342\264\260\342\265\233\342\265\215\342\265\203\342\265\211\342\265\234 (Tifinagh)"
wxLANGUAGE_TACHELHIT_TIFINAGH_MOROCCO 3.1.6 shi-Tfng-MA shi_MA@tifinagh - 0x00 0x04 LTR "Tachelhit (Tifinagh, Morocco)","\342\265\234\342\264\260\342\265\233\342\265\215\342\265\203\342\265\211\342\265\234 (\342\265\215\342\265\216\342\265\226\342\265\224\342\265\211\342\264\261)"
wxLANGUAGE_TAGALOG - tl-PH tl_PH - - - LTR "Tagalog","Tagalog"
wxLANGUAGE_TAGALOG 3.3.0 tl tl tl_PH - - LTR "Tagalog","Tagalog"
wxLANGUAGE_TAGALOG_PHILIPPINES - tl-PH tl_PH - - - LTR "Tagalog (Philippines)","Tagalog (Pilipinas)"
wxLANGUAGE_TAITA 3.1.6 dav dav dav_KE 0x00 0x04 LTR "Taita","Kitaita"
wxLANGUAGE_TAITA_KENYA 3.1.6 dav-KE dav_KE - 0x00 0x04 LTR "Taita (Kenya)","Kitaita (Kenya)"
wxLANGUAGE_TAJIK - tg tg - 0x28 0x01 LTR "Tajik","\320\242\320\276\322\267\320\270\320\272\323\243"
@@ -826,8 +826,8 @@ wxLANGUAGE_TAMIL_SINGAPORE 3.1.6 ta-SG
wxLANGUAGE_TAMIL_SRI_LANKA 3.1.6 ta-LK ta_LK - 0x49 0x02 LTR "Tamil (Sri Lanka)","\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215 (\340\256\207\340\256\262\340\256\231\340\257\215\340\256\225\340\257\210)"
wxLANGUAGE_TASAWAQ 3.1.6 twq twq twq_NE 0x00 0x04 LTR "Tasawaq","Tasawaq senni"
wxLANGUAGE_TASAWAQ_NIGER 3.1.6 twq-NE twq_NE - 0x00 0x04 LTR "Tasawaq (Niger)","Tasawaq senni (Ni\305\276er)"
wxLANGUAGE_TATAR - tt tt tt_RU 0x44 0x01 LTR "Tatar","\320\242\320\260\321\202\320\260\321\200"
wxLANGUAGE_TATAR_RUSSIA 3.1.6 tt-RU tt_RU - 0x44 0x01 LTR "Tatar (Russia)","\320\242\320\260\321\202\320\260\321\200 (\320\240\320\276\321\201\321\201\320\270\321\217)"
wxLANGUAGE_TATAR - tt tt tt_RU 0x44 0x01 LTR "Tatar","\321\202\320\260\321\202\320\260\321\200"
wxLANGUAGE_TATAR_RUSSIA 3.1.6 tt-RU tt_RU - 0x44 0x01 LTR "Tatar (Russia)","\321\202\320\260\321\202\320\260\321\200 (\320\240\320\276\321\201\321\201\320\270\321\217)"
wxLANGUAGE_TELUGU - te te te_IN 0x4a 0x01 LTR "Telugu","\340\260\244\340\261\206\340\260\262\340\261\201\340\260\227\340\261\201"
wxLANGUAGE_TELUGU_INDIA 3.1.6 te-IN te_IN - 0x4a 0x01 LTR "Telugu (India)","\340\260\244\340\261\206\340\260\262\340\261\201\340\260\227\340\261\201 (\340\260\255\340\260\276\340\260\260\340\260\244\340\260\246\340\261\207\340\260\266\340\260\202)"
wxLANGUAGE_TESO 3.1.6 teo teo teo_UG 0x00 0x04 LTR "Teso","Kiteso"
@@ -835,8 +835,8 @@ wxLANGUAGE_TESO_KENYA 3.1.6 teo-KE
wxLANGUAGE_TESO_UGANDA 3.1.6 teo-UG teo_UG - 0x00 0x04 LTR "Teso (Uganda)","Kiteso (Uganda)"
wxLANGUAGE_THAI - th th th_TH 0x1e 0x01 LTR "Thai","\340\271\204\340\270\227\340\270\242"
wxLANGUAGE_THAI_THAILAND 3.1.6 th-TH th_TH - 0x1e 0x01 LTR "Thai (Thailand)","\340\271\204\340\270\227\340\270\242 (\340\271\204\340\270\227\340\270\242)"
wxLANGUAGE_TIBETAN - bo bo bo_CN 0x51 0x01 LTR "Tibetan","\340\275\226\340\275\274\340\275\221\340\274\213\340\275\241\340\275\262\340\275\202"
wxLANGUAGE_TIBETAN_CHINA 3.1.6 bo-CN bo_CN - 0x51 0x01 LTR "Tibetan (China)","\340\275\226\340\275\274\340\275\221\340\274\213\340\275\241\340\275\262\340\275\202 (\340\275\200\340\276\262\340\275\264\340\275\204\340\274\213\340\275\247\340\276\255\340\274\213\340\275\230\340\275\262\340\274\213\340\275\221\340\275\230\340\275\204\340\275\246\340\274\213\340\275\246\340\276\244\340\276\261\340\275\262\340\274\213\340\275\230\340\275\220\340\275\264\340\275\223\340\274\213\340\275\242\340\276\222\340\276\261\340\275\243\340\274\213\340\275\201\340\275\226\340\274\215)"
wxLANGUAGE_TIBETAN - bo bo bo_CN 0x51 0x01 LTR "Tibetan","\340\275\226\340\275\274\340\275\221\340\274\213\340\275\246\340\276\220\340\275\221\340\274\213"
wxLANGUAGE_TIBETAN_CHINA 3.1.6 bo-CN bo_CN - 0x51 0x01 LTR "Tibetan (China)","\340\275\226\340\275\274\340\275\221\340\274\213\340\275\246\340\276\220\340\275\221\340\274\213 (\340\275\242\340\276\222\340\276\261\340\274\213\340\275\223\340\275\202)"
wxLANGUAGE_TIBETAN_INDIA 3.1.6 bo-IN bo_IN - 0x00 0x04 LTR "Tibetan (India)","\340\275\226\340\275\274\340\275\221\340\274\213\340\275\246\340\276\220\340\275\221\340\274\213 (\340\275\242\340\276\222\340\276\261\340\274\213\340\275\202\340\275\242\340\274\213)"
wxLANGUAGE_TIGRE 3.1.6 tig tig tig_ER 0x00 0x04 LTR "Tigre","\341\211\265\341\214\215\341\210\250"
wxLANGUAGE_TIGRE_ERITREA 3.1.6 tig-ER tig_ER - 0x00 0x04 LTR "Tigre (Eritrea)","\341\211\265\341\214\215\341\210\250 (\341\212\244\341\210\255\341\211\265\341\210\253)"
@@ -849,9 +849,9 @@ wxLANGUAGE_TSONGA - ts
wxLANGUAGE_TSONGA_SOUTH_AFRICA 3.1.6 ts-ZA ts_ZA - 0x31 0x01 LTR "Xitsonga (South Africa)","Xitsonga (South Africa)"
wxLANGUAGE_TURKISH - tr tr tr_TR 0x1f 0x01 LTR "Turkish","T\303\274rk\303\247e"
wxLANGUAGE_TURKISH_CYPRUS 3.1.6 tr-CY tr_CY - 0x00 0x04 LTR "Turkish (Cyprus)","T\303\274rk\303\247e (K\304\261br\304\261s)"
wxLANGUAGE_TURKISH_TURKEY 3.1.6 tr-TR tr_TR - 0x1f 0x01 LTR "Turkish (Turkey)","T\303\274rk\303\247e (T\303\274rkiye)"
wxLANGUAGE_TURKMEN - tk tk tk_TM 0x42 0x01 LTR "Turkmen","T\303\274rkmen dili"
wxLANGUAGE_TURKMEN_TURKMENISTAN 3.1.6 tk-TM tk_TM - 0x42 0x01 LTR "Turkmen (Turkmenistan)","T\303\274rkmen dili (T\303\274rkmenistan)"
wxLANGUAGE_TURKISH_TURKIYE 3.1.6 tr-TR tr_TR - 0x1f 0x01 LTR "Turkish (T\303\274rkiye)","T\303\274rk\303\247e (T\303\274rkiye)"
wxLANGUAGE_TURKMEN - tk tk tk_TM 0x42 0x01 LTR "Turkmen","t\303\274rkmen dili"
wxLANGUAGE_TURKMEN_TURKMENISTAN 3.1.6 tk-TM tk_TM - 0x42 0x01 LTR "Turkmen (Turkmenistan)","t\303\274rkmen dili (T\303\274rkmenistan)"
wxLANGUAGE_TWI - tw tw - - - LTR "Twi","Twi"
wxLANGUAGE_UIGHUR - ug ug ug_CN 0x80 0x01 RTL "Uyghur","\330\246\333\207\331\212\330\272\333\207\330\261\332\206\333\225"
wxLANGUAGE_UIGHUR_CHINA 3.1.6 ug-CN ug_CN - 0x80 0x01 RTL "Uyghur (China)","\330\246\333\207\331\212\330\272\333\207\330\261\332\206\333\225 (\330\254\333\207\332\255\330\256\333\207\330\247 \330\256\333\225\331\204\331\202 \330\254\333\207\331\205\332\276\333\207\330\261\331\211\331\212\331\211\330\252\331\211)"
@@ -859,9 +859,9 @@ wxLANGUAGE_UKRAINIAN - uk
wxLANGUAGE_UKRAINIAN_UKRAINE 3.1.6 uk-UA uk_UA - 0x22 0x01 LTR "Ukrainian (Ukraine)","\321\203\320\272\321\200\320\260\321\227\320\275\321\201\321\214\320\272\320\260 (\320\243\320\272\321\200\320\260\321\227\320\275\320\260)"
wxLANGUAGE_UPPER_SORBIAN 3.1.6 hsb hsb hsb_DE 0x2e 0x01 LTR "Upper Sorbian","hornjoserb\305\241\304\207ina"
wxLANGUAGE_UPPER_SORBIAN_GERMANY 3.1.6 hsb-DE hsb_DE - 0x2e 0x01 LTR "Upper Sorbian (Germany)","hornjoserb\305\241\304\207ina (N\304\233mska)"
wxLANGUAGE_URDU - ur ur ur_PK 0x20 0x01 RTL "Urdu","\330\247\331\217\330\261\330\257\331\210"
wxLANGUAGE_URDU - ur ur ur_PK 0x20 0x01 RTL "Urdu","\330\247\330\261\330\257\331\210"
wxLANGUAGE_URDU_INDIA - ur-IN ur_IN - 0x20 0x02 RTL "Urdu (India)","\330\247\330\261\330\257\331\210 (\330\250\332\276\330\247\330\261\330\252)"
wxLANGUAGE_URDU_PAKISTAN - ur-PK ur_PK - 0x20 0x01 RTL "Urdu (Pakistan)","\330\247\331\217\330\261\330\257\331\210 (\331\276\330\247\332\251\330\263\330\252\330\247\331\206)"
wxLANGUAGE_URDU_PAKISTAN - ur-PK ur_PK - 0x20 0x01 RTL "Urdu (Pakistan)","\330\247\330\261\330\257\331\210 (\331\276\330\247\332\251\330\263\330\252\330\247\331\206)"
wxLANGUAGE_UZBEK - uz uz - 0x43 0x01 LTR "Uzbek","o\342\200\230zbek"
wxLANGUAGE_UZBEK_ARABIC 3.3.0 uz-Arab uz@arabic - 0x00 0x04 RTL "Uzbek (Arabic)","\330\247\331\210\330\262\330\250\333\214\332\251 (\330\271\330\261\330\250\333\214)"
wxLANGUAGE_UZBEK_ARABIC_AFGHANISTAN 3.3.0 uz-Arab-AF uz_AF@arabic - 0x00 0x04 RTL "Uzbek (Arabic, Afghanistan)","\330\247\331\210\330\262\330\250\333\214\332\251 (\330\247\331\201\330\272\330\247\331\206\330\263\330\252\330\247\331\206)"
@@ -877,8 +877,8 @@ wxLANGUAGE_VAI_VAI_LIBERIA 3.1.6 vai-Vaii-LR
wxLANGUAGE_VALENCIAN 2.8.8 ca-ES-valencia ca_ES@valencia - 0x03 0x02 LTR "Valencian (Spain)","valenci\303\240 (Espanya)"
wxLANGUAGE_VENDA 3.1.6 ve ve ve_ZA 0x33 0x01 LTR "Venda","Tshiven\341\270\223a"
wxLANGUAGE_VENDA_SOUTH_AFRICA 3.1.6 ve-ZA ve_ZA - 0x33 0x01 LTR "Venda (South Africa)","Tshiven\341\270\223a (South Africa)"
wxLANGUAGE_VIETNAMESE - vi vi vi_VN 0x2a 0x01 LTR "Vietnamese","Ti\303\252\314\201ng Vi\341\273\207t"
wxLANGUAGE_VIETNAMESE_VIETNAM 3.1.6 vi-VN vi_VN - 0x2a 0x01 LTR "Vietnamese (Vietnam)","Ti\303\252\314\201ng Vi\341\273\207t (Vi\341\273\207t Nam)"
wxLANGUAGE_VIETNAMESE - vi vi vi_VN 0x2a 0x01 LTR "Vietnamese","Ti\341\272\277ng Vi\341\273\207t"
wxLANGUAGE_VIETNAMESE_VIETNAM 3.1.6 vi-VN vi_VN - 0x2a 0x01 LTR "Vietnamese (Vietnam)","Ti\341\272\277ng Vi\341\273\207t (Vi\341\273\207t Nam)"
wxLANGUAGE_VOLAPUK - vo vo - 0x00 0x04 LTR "Volap\303\274k","Volap\303\274k"
wxLANGUAGE_VOLAPUK_WORLD 3.1.6 vo-001 vo_001 - 0x00 0x04 LTR "Volap\303\274k (World)","Volap\303\274k (World)"
wxLANGUAGE_VUNJO 3.1.6 vun vun vun_TZ 0x00 0x04 LTR "Vunjo","Kyivunjo"
@@ -895,10 +895,10 @@ wxLANGUAGE_XHOSA - xh
wxLANGUAGE_XHOSA_SOUTH_AFRICA 3.1.6 xh-ZA xh_ZA - 0x34 0x01 LTR "isiXhosa (South Africa)","isiXhosa (eMzantsi Afrika)"
wxLANGUAGE_YANGBEN 3.1.6 yav yav yav_CM 0x00 0x04 LTR "Yangben","nuasue"
wxLANGUAGE_YANGBEN_CAMEROON 3.1.6 yav-CM yav_CM - 0x00 0x04 LTR "Yangben (Cameroon)","nuasue (Kemel\303\272n)"
wxLANGUAGE_YI 3.1.6 ii ii ii_CN 0x78 0x01 LTR "Yi","\352\206\210\352\214\240\352\201\261\352\202\267"
wxLANGUAGE_YI 3.1.6 ii ii ii_CN 0x78 0x01 LTR "Yi","\352\206\210\352\214\240\352\211\231"
wxLANGUAGE_YIDDISH - yi yi - 0x3d 0x01 RTL "Yiddish","\327\231\327\231\326\264\327\223\327\231\327\251"
wxLANGUAGE_YIDDISH_WORLD 3.1.6 yi-001 yi_001 - 0x3d 0x01 RTL "Yiddish (World)","\327\231\327\231\326\264\327\223\327\231\327\251 (\327\225\327\225\327\242\327\234\327\230)"
wxLANGUAGE_YI_CHINA 3.1.6 ii-CN ii_CN - 0x78 0x01 LTR "Yi (China)","\352\206\210\352\214\240\352\201\261\352\202\267 (\352\215\217\352\211\270\352\217\223\352\202\261\352\207\255\352\211\274\352\207\251)"
wxLANGUAGE_YI_CHINA 3.1.6 ii-CN ii_CN - 0x78 0x01 LTR "Yi (China)","\352\206\210\352\214\240\352\211\231 (\352\215\217\352\207\251)"
wxLANGUAGE_YORUBA - yo yo yo_NG 0x6a 0x01 LTR "Yoruba","\303\210d\303\250 Yor\303\271b\303\241"
wxLANGUAGE_YORUBA_BENIN 3.1.6 yo-BJ yo_BJ - 0x00 0x04 LTR "Yoruba (Benin)","\303\210d\303\250 Yor\303\271b\303\241 (B\311\233\314\200n\311\233\314\200)"
wxLANGUAGE_YORUBA_NIGERIA 3.1.6 yo-NG yo_NG - 0x6a 0x01 LTR "Yoruba (Nigeria)","\303\210d\303\250 Yor\303\271b\303\241 (N\303\240\303\254j\303\255r\303\255\303\240)"
+315
View File
@@ -0,0 +1,315 @@
aa aa-Latn-ET
ab ab-Cyrl-GE
af af-Latn-ZA
agq agq-Latn-CM
ak ak-Latn-GH
am am-Ethi-ET
ar ar-Arab-EG
arn arn-Latn-CL
as as-Beng-IN
asa asa-Latn-TZ
ast ast-Latn-ES
ay ay-Latn-BO
az az-Latn-AZ
az-Arab az-Arab-IR
az-IQ az-Arab-IQ
az-IR az-Arab-IR
az-RU az-Cyrl-RU
ba ba-Cyrl-RU
bas bas-Latn-CM
be be-Cyrl-BY
bem bem-Latn-ZM
bez bez-Latn-TZ
bg bg-Cyrl-BG
bi bi-Latn-VU
bin bin-Latn-NG
bm bm-Latn-ML
bn bn-Beng-BD
bo bo-Tibt-CN
br br-Latn-FR
brx brx-Deva-IN
bs bs-Latn-BA
byn byn-Ethi-ER
ca ca-Latn-ES
ccp ccp-Cakm-BD
ce ce-Cyrl-RU
ceb ceb-Latn-PH
cgg cgg-Latn-UG
chr chr-Cher-US
co co-Latn-FR
cs cs-Latn-CZ
cu cu-Cyrl-RU
cu-Glag cu-Glag-BG
cy cy-Latn-GB
da da-Latn-DK
dav dav-Latn-KE
de de-Latn-DE
dje dje-Latn-NE
doi doi-Deva-IN
dsb dsb-Latn-DE
dua dua-Latn-CM
dv dv-Thaa-MV
dyo dyo-Latn-SN
dz dz-Tibt-BT
ebu ebu-Latn-KE
ee ee-Latn-GH
el el-Grek-GR
en en-Latn-US
en-Shaw en-Shaw-GB
eo eo-Latn-001
es es-Latn-ES
et et-Latn-EE
eu eu-Latn-ES
ewo ewo-Latn-CM
fa fa-Arab-IR
ff ff-Latn-SN
ff-Adlm ff-Adlm-GN
fi fi-Latn-FI
fil fil-Latn-PH
fj fj-Latn-FJ
fo fo-Latn-FO
fr fr-Latn-FR
fur fur-Latn-IT
fy fy-Latn-NL
ga ga-Latn-IE
gd gd-Latn-GB
gl gl-Latn-ES
gn gn-Latn-PY
gsw gsw-Latn-CH
gu gu-Gujr-IN
guz guz-Latn-KE
gv gv-Latn-IM
ha ha-Latn-NG
ha-CM ha-Arab-CM
ha-SD ha-Arab-SD
haw haw-Latn-US
he he-Hebr-IL
hi hi-Deva-IN
hr hr-Latn-HR
hsb hsb-Latn-DE
hu hu-Latn-HU
hy hy-Armn-AM
ia ia-Latn-001
ibb ibb-Latn-NG
id id-Latn-ID
ie ie-Latn-EE
ig ig-Latn-NG
ii ii-Yiii-CN
ik ik-Latn-US
is is-Latn-IS
it it-Latn-IT
iu iu-Cans-CA
ja ja-Jpan-JP
jgo jgo-Latn-CM
jmc jmc-Latn-TZ
jv jv-Latn-ID
ka ka-Geor-GE
kab kab-Latn-DZ
kam kam-Latn-KE
kde kde-Latn-TZ
kea kea-Latn-CV
khq khq-Latn-ML
ki ki-Latn-KE
kk kk-Cyrl-KZ
kk-AF kk-Arab-AF
kk-Arab kk-Arab-CN
kk-CN kk-Arab-CN
kk-IR kk-Arab-IR
kk-MN kk-Arab-MN
kkj kkj-Latn-CM
kl kl-Latn-GL
kln kln-Latn-KE
km km-Khmr-KH
kn kn-Knda-IN
ko ko-Kore-KR
kok kok-Deva-IN
kr kr-Latn-NG
ks ks-Arab-IN
ksb ksb-Latn-TZ
ksf ksf-Latn-CM
ksh ksh-Latn-DE
ku ku-Latn-TR
ku-Arab ku-Arab-IQ
ku-LB ku-Arab-LB
ku-Yezi ku-Yezi-GE
kw kw-Latn-GB
ky ky-Cyrl-KG
ky-Arab ky-Arab-CN
ky-CN ky-Arab-CN
ky-Latn ky-Latn-TR
ky-TR ky-Latn-TR
la la-Latn-VA
lag lag-Latn-TZ
lb lb-Latn-LU
lg lg-Latn-UG
lkt lkt-Latn-US
ln ln-Latn-CD
lo lo-Laoo-LA
lrc lrc-Arab-IR
lt lt-Latn-LT
lu lu-Latn-CD
luo luo-Latn-KE
luy luy-Latn-KE
lv lv-Latn-LV
mai mai-Deva-IN
mas mas-Latn-KE
mer mer-Latn-KE
mfe mfe-Latn-MU
mg mg-Latn-MG
mgh mgh-Latn-MZ
mgo mgo-Latn-CM
mi mi-Latn-NZ
mk mk-Cyrl-MK
ml ml-Mlym-IN
mn mn-Cyrl-MN
mn-CN mn-Mong-CN
mn-Mong mn-Mong-CN
mni mni-Beng-IN
mo mo-Latn-RO
moh moh-Latn-CA
mr mr-Deva-IN
ms ms-Latn-MY
ms-CC ms-Arab-CC
mt mt-Latn-MT
mua mua-Latn-CM
my my-Mymr-MM
mzn mzn-Arab-IR
na na-Latn-NR
naq naq-Latn-NA
nb nb-Latn-NO
nd nd-Latn-ZW
nds nds-Latn-DE
ne ne-Deva-NP
nl nl-Latn-NL
nmg nmg-Latn-CM
nn nn-Latn-NO
nnh nnh-Latn-CM
no no-Latn-NO
nqo nqo-Nkoo-GN
nr nr-Latn-ZA
nso nso-Latn-ZA
nus nus-Latn-SS
nyn nyn-Latn-UG
oc oc-Latn-FR
om om-Latn-ET
or or-Orya-IN
os os-Cyrl-GE
pa pa-Guru-IN
pa-Arab pa-Arab-PK
pa-PK pa-Arab-PK
pap pap-Latn-CW
pcm pcm-Latn-NG
pl pl-Latn-PL
prg prg-Latn-PL
ps ps-Arab-AF
pt pt-Latn-BR
qu qu-Latn-PE
quc quc-Latn-GT
rm rm-Latn-CH
rn rn-Latn-BI
ro ro-Latn-RO
rof rof-Latn-TZ
ru ru-Cyrl-RU
rw rw-Latn-RW
rwk rwk-Latn-TZ
sa sa-Deva-IN
sah sah-Cyrl-RU
saq saq-Latn-KE
sat sat-Olck-IN
sbp sbp-Latn-TZ
sd sd-Arab-PK
sd-Deva sd-Deva-IN
sd-IN sd-Deva-IN
sd-Khoj sd-Khoj-IN
sd-Sind sd-Sind-IN
se se-Latn-NO
seh seh-Latn-MZ
ses ses-Latn-ML
sg sg-Latn-CF
shi shi-Tfng-MA
si si-Sinh-LK
sk sk-Latn-SK
sl sl-Latn-SI
sm sm-Latn-WS
sma sma-Latn-SE
smj smj-Latn-SE
smn smn-Latn-FI
sms sms-Latn-FI
sn sn-Latn-ZW
so so-Latn-SO
sq sq-Latn-AL
sr sr-Cyrl-RS
sr-ME sr-Latn-ME
sr-RO sr-Latn-RO
sr-RU sr-Latn-RU
sr-TR sr-Latn-TR
ss ss-Latn-ZA
ssy ssy-Latn-ER
st st-Latn-ZA
su su-Latn-ID
sv sv-Latn-SE
sw sw-Latn-TZ
syr syr-Syrc-IQ
ta ta-Taml-IN
te te-Telu-IN
teo teo-Latn-UG
tg tg-Cyrl-TJ
tg-Arab tg-Arab-PK
tg-PK tg-Arab-PK
th th-Thai-TH
ti ti-Ethi-ET
tig tig-Ethi-ER
tk tk-Latn-TM
tl tl-Latn-PH
tn tn-Latn-ZA
to to-Latn-TO
tr tr-Latn-TR
ts ts-Latn-ZA
tt tt-Cyrl-RU
twq twq-Latn-NE
tzm tzm-Latn-MA
ug ug-Arab-CN
ug-Cyrl ug-Cyrl-KZ
ug-KZ ug-Cyrl-KZ
ug-MN ug-Cyrl-MN
uk uk-Cyrl-UA
ur ur-Arab-PK
uz uz-Latn-UZ
uz-AF uz-Arab-AF
uz-Arab uz-Arab-AF
uz-CN uz-Cyrl-CN
vai vai-Vaii-LR
ve ve-Latn-ZA
vi vi-Latn-VN
vo vo-Latn-001
vun vun-Latn-TZ
wae wae-Latn-CH
wal wal-Ethi-ET
wo wo-Latn-SN
xh xh-Latn-ZA
xog xog-Latn-UG
yav yav-Latn-CM
yi yi-Hebr-UA
yo yo-Latn-NG
za za-Latn-CN
zgh zgh-Tfng-MA
zh zh-Hans-CN
zh-AU zh-Hant-AU
zh-BN zh-Hant-BN
zh-Bopo zh-Bopo-TW
zh-GB zh-Hant-GB
zh-GF zh-Hant-GF
zh-HK zh-Hant-HK
zh-Hanb zh-Hanb-TW
zh-Hant zh-Hant-TW
zh-ID zh-Hant-ID
zh-MO zh-Hant-MO
zh-PA zh-Hant-PA
zh-PF zh-Hant-PF
zh-PH zh-Hant-PH
zh-SR zh-Hant-SR
zh-TH zh-Hant-TH
zh-TW zh-Hant-TW
zh-US zh-Hant-US
zh-VN zh-Hant-VN
zu zu-Latn-ZA
+176
View File
@@ -0,0 +1,176 @@
aa ssy 4
ab ru 30
af nl 20
ak en 30
am en 30
am-Ethi en-Latn 10
ar-Latn ar-Arab 20
ay es 20
az ru 30
az-Latn ru-Cyrl 10
be ru 20
bem en 30
bh hi 30
bn en 30
bn-Beng en-Latn 10
bn-Latn bn-Beng 20
bo zh 20
bo-Tibt zh-Hans 10
br fr 20
bs hr 4
bs sh 4
ca es 20
ceb fil 30
chr en 20
co fr 20
cs sk 20
cy en 20
da nb 8
da no 8
ee en 30
eo en 30
eu es 20
fo da 20
fy nl 20
ga en 20
gd en 20
gl es 20
gn es 20
gsw de 4
gu hi 30
gu-Latn gu-Gujr 20
ha en 30
haw en 20
hi-Latn hi-Deva 20
hr bs 4
hr sh 4
hy ru 30
hy-Armn ru-Cyrl 10
ia en 30
id ms 10
ig en 30
is en 20
ja-Hani ja-Jpan 5
ja-Hira ja-Hrkt 5
ja-Hira ja-Jpan 5
ja-Hrkt ja-Jpan 5
ja-Kana ja-Hrkt 5
ja-Kana ja-Jpan 5
ja-Latn ja-Jpan 5
jv id 20
ka en 30
ka-Geor en-Latn 10
kk ru 30
km en 30
km-Khmr en-Latn 10
kn en 30
kn-Knda en-Latn 10
kn-Latn kn-Knda 20
ko-Hang ko-Kore 5
ko-Hani ko-Kore 5
ko-Jamo ko-Hang 5
ko-Jamo ko-Kore 5
ku tr 30
ky ru 30
la it 20
lb de 4
lg en 30
ln fr 30
lo en 30
lo-Laoo en-Latn 10
mai hi 20
mfe en 30
mg fr 30
mi en 20
ml en 30
ml-Latn ml-Mlym 20
ml-Mlym en-Latn 10
mn ru 30
mr hi 30
mr-Latn mr-Deva 20
ms id 30
mt en 30
my en 30
my-Mymr en-Latn 10
nb da 8
nb nn 20
nb no 1
ne en 30
ne-Deva en-Latn 10
nn nb 20
nn no 20
no da 8
no nb 1
no nn 20
nso en 30
nyn en 30
oc fr 20
om en 30
or en 30
or-Orya en-Latn 10
pa en 30
pa-Guru en-Latn 10
pcm en 20
ps en 30
ps-Arab en-Latn 10
qu es 30
rm de 20
rn en 30
rw fr 30
sa hi 30
sd en 30
sd-Arab en-Latn 10
sh bs 4
sh hr 4
sh sr 4
si en 30
si-Sinh en-Latn 10
sk cs 20
sn en 30
so en 30
sq en 30
sr sh 4
sr-Cyrl sr-Latn 5
sr-Latn sr-Cyrl 5
ssy aa 4
st en 30
su id 20
sw en 30
ta en 30
ta-Latn ta-Taml 20
ta-Taml en-Latn 10
te en 30
te-Latn te-Telu 20
te-Telu en-Latn 10
tg ru 30
ti en 30
ti-Ethi en-Latn 10
tk ru 30
tk-Latn ru-Cyrl 10
tn en 30
to en 30
tt ru 30
ug zh 20
ur en 30
ur-Arab en-Latn 10
uz ru 30
uz-Latn ru-Cyrl 10
wo fr 30
xh en 30
yi en 30
yi-Hebr en-Latn 10
yo en 30
za zh 20
za-Latn zh-Hans 10
zh-Hani zh-Hans 20
zh-Hani zh-Hant 20
zh-Latn zh-Hans 20
zu en 30
* * 80
*-* *-* 50
*-*-* *-*-* 4
ar-*-* ar-*-* 5
en-*-* en-*-* 5
es-*-* es-*-* 5
pt-*-* pt-*-* 5
zh-Hant-* zh-Hant-* 5
+14
View File
@@ -0,0 +1,14 @@
# Prepare language data files update artifact
# Generated source files
New-Item -Path "distlang\include\wx\private" -ItemType Directory
New-Item -Path "distlang\interface\wx" -ItemType Directory
New-Item -Path "distlang\src\common" -ItemType Directory
Copy-Item -Path "include\wx\language.h" -Destination "distlang\include\wx\language.h" -Force
Copy-Item -Path "include\wx\private\lang_*.h" -Destination "distlang\include\wx\private" -Force
Copy-Item -Path "interface\wx\language.h" -Destination "distlang\interface\wx\language.h" -Force
Copy-Item -Path "src\common\languageinfo.cpp" -Destination "distlang\src\common\languageinfo.cpp" -Force
# Raw data tables
New-Item -Path "distlang\misc\languages" -ItemType Directory
Copy-Item -Path "misc\languages\*.txt" -Destination "distlang\misc\languages" -recurse -Force
+132
View File
@@ -0,0 +1,132 @@
ar DZ
ar EH
ar LY
ar MA
ar MR
ar TN
en AS
en CA
en GU
en MH
en MP
en PH
en PR
en UM
en US
en VI
es AG
es AI
es AR
es AW
es BB
es BL
es BM
es BO
es BQ
es BR
es BS
es BV
es BZ
es CA
es CL
es CO
es CR
es CU
es CW
es DM
es DO
es EC
es FK
es GD
es GF
es GL
es GP
es GS
es GT
es GY
es HN
es HT
es JM
es KN
es KY
es LC
es MF
es MQ
es MS
es MX
es NI
es PA
es PE
es PM
es PR
es PY
es SR
es SV
es SX
es TC
es TT
es US
es UY
es VC
es VE
es VG
es VI
pt AG
pt AI
pt AR
pt AW
pt BB
pt BL
pt BM
pt BO
pt BQ
pt BR
pt BS
pt BV
pt BZ
pt CA
pt CL
pt CO
pt CR
pt CU
pt CW
pt DM
pt DO
pt EC
pt FK
pt GD
pt GF
pt GL
pt GP
pt GS
pt GT
pt GY
pt HN
pt HT
pt JM
pt KN
pt KY
pt LC
pt MF
pt MQ
pt MS
pt MX
pt NI
pt PA
pt PE
pt PM
pt PR
pt PY
pt SR
pt SV
pt SX
pt TC
pt TT
pt US
pt UY
pt VC
pt VE
pt VG
pt VI
zh-Hant HK
zh-Hant MO
+4
View File
@@ -48,6 +48,8 @@ Guru gurmukhi
Hang hangul
Hani han
Hano hanunoo
Hans Hans
Hant Hant
Hatr hatran
Hebr hebrew
Hira hiragana
@@ -60,6 +62,7 @@ Ital old_italic
Java javanese
Kali kayah_li
Kana katakana
Kawi kawi
Khar kharoshthi
Khmr khmer
Khoj khojki
@@ -92,6 +95,7 @@ Mroo mro
Mtei meetei_mayek
Mult multani
Mymr myanmar
Nagm nag_mundari
Nand nandinagari
Narb old_north_arabian
Nbat nabataean
+4
View File
@@ -9,16 +9,20 @@ wxLANGUAGE_CAMBODIAN wxLANGUAGE_KHMER
wxLANGUAGE_CHINESE_MACAU wxLANGUAGE_CHINESE_MACAO zh-MO -
wxLANGUAGE_CHINESE_SIMPLIFIED wxLANGUAGE_CHINESE_CHINA zh-CN -
wxLANGUAGE_CHINESE_TRADITIONAL wxLANGUAGE_CHINESE_TAIWAN zh-TW -
wxLANGUAGE_DARI wxLANGUAGE_PERSIAN prs 3.1.6
wxLANGUAGE_DARI_AFGHANISTAN wxLANGUAGE_PERSIAN_AFGHANISTAN prs-AF 3.1.6
wxLANGUAGE_FARSI wxLANGUAGE_PERSIAN fa -
wxLANGUAGE_GREENLANDIC wxLANGUAGE_KALAALLISUT_GREENLAND kl_GL -
wxLANGUAGE_KANURI_NIGERIA wxLANGUAGE_KANURI_LATIN_NIGERIA kr-Latn-NG -
wxLANGUAGE_KASHMIRI_PERSO_ARABIC wxLANGUAGE_KASHMIRI_ARABIC ks-Arab 3.1.6
wxLANGUAGE_KASHMIRI_PERSO_ARABIC_INDIA wxLANGUAGE_KASHMIRI_ARABIC_INDIA ks-Arab-IN 3.1.6
wxLANGUAGE_KERNEWEK wxLANGUAGE_CORNISH kw -
wxLANGUAGE_KICHE_GUATEMALA wxLANGUAGE_KICHE_LATIN_GUATEMALA quc-Latn-GT 3.1.6
wxLANGUAGE_KURDISH_PERSO_ARABIC_IRAN wxLANGUAGE_KURDISH_ARABIC_IRAN ku-Arab-IR -
wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM wxLANGUAGE_MALAY_BRUNEI ms-BN -
wxLANGUAGE_ORIYA wxLANGUAGE_ODIA or -
wxLANGUAGE_ORIYA_INDIA wxLANGUAGE_ODIA_INDIA or-IN -
wxLANGUAGE_SPANISH_MODERN wxLANGUAGE_SPANISH es -
wxLANGUAGE_TURKISH_TURKEY wxLANGUAGE_TURKISH_TURKIYE tr-TR 3.1.6
wxLANGUAGE_UZBEK_PERSO_ARABIC wxLANGUAGE_UZBEK_ARABIC uz-Arab 3.1.6
wxLANGUAGE_UZBEK_PERSO_ARABIC_AFGHANISTAN wxLANGUAGE_UZBEK_ARABIC_AFGHANISTAN uz-Arab-AF 3.1.6
+1 -1
View File
@@ -12,7 +12,7 @@ fi
$CODESPELL \
-I misc/suppressions/codespell-words \
-x misc/suppressions/codespell-lines \
-S 'build/cmake/modules/cotire.cmake,docs/changes*.txt,*.png,*.ico,*.bmp,*.cur,docs/doxygen/images,docs/doxygen/mainpages/copyright.h,docs/doxygen/doxygen-awesome-css' \
-S 'build/cmake/modules/cotire.cmake,docs/changes*.txt,*.png,*.ico,*.bmp,*.cur,docs/doxygen/images,docs/doxygen/mainpages/copyright.h,docs/doxygen/doxygen-awesome-css,include/wx/private/lang_*.h' \
README.md docs include interface
rc=$?