wxwidgets/misc/languages/data/windows/win_genlocaletable.lua
utelle a20aa4de75 Improve generated process for the language database files
Fix some issues and streamline regeneration process:

- A few glitches (like duplicate language symbols, wrong Windows
  language ids etc) were fixed.
- Scripts were added to allow to regenerate the list of supported
  locales from the list of known Windows locales.
- Version info when language symbols became available was added to the
  documentation of the language symbol enum.
- Synonyms are no longer hard-coded in the script genlang.py.

See #23453.

Closes #23437.
2023-04-18 14:27:28 +02:00

380 lines
19 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Assign script arguments and check validity
-- Data source:
-- File generated by utility app from Windows data
codeFileName = "windows/win-locale-table-win.txt"
function scriptmap()
-- mapping script id to script name
-- needs to be updated manually, if new scripts are encountered
return {
["Arab"] = "arabic",
["Adlm"] = "adlam",
["Beng"] = "bengali",
["Cakm"] = "chakma",
["Cans"] = "canadian_aboriginal",
["Cher"] = "cherokee",
["Cyrl"] = "cyrillic",
["Deva"] = "devanagari",
["Guru"] = "gurmukhi",
["Java"] = "javanese",
["Latn"] = "latin",
["Mong"] = "mongolian",
["Olck"] = "ol_chiki",
["Tfng"] = "tifinagh",
["Vaii"] = "vai"
}
end
function initmap()
-- mapping locale id to wx language identifier
return {
["ar_AE"] = "wxLANGUAGE_ARABIC_UAE",
["bn_IN"] = "wxLANGUAGE_BANGLA_INDIA",
["ca_ES@valencia"] = "wxLANGUAGE_VALENCIAN",
["chr@cherokee"] = "wxLANGUAGE_CHEROKEE_CHEROKEE",
["chr_US@cherokee"] = "wxLANGUAGE_CHEROKEE_US",
["cy_GB"] = "wxLANGUAGE_WELSH_UK",
["de_AT"] = "wxLANGUAGE_GERMAN_AUSTRIAN",
["de_CH"] = "wxLANGUAGE_GERMAN_SWISS",
["en_IE"] = "wxLANGUAGE_ENGLISH_EIRE",
["en_TT"] = "wxLANGUAGE_ENGLISH_TRINIDAD",
["en_GB"] = "wxLANGUAGE_ENGLISH_UK",
["en_US"] = "wxLANGUAGE_ENGLISH_US",
["es_MX"] = "wxLANGUAGE_SPANISH_MEXICAN",
["es_US"] = "wxLANGUAGE_SPANISH_US",
["ff"] = "wxLANGUAGE_FULAH",
["fo"] = "wxLANGUAGE_FAEROESE",
["fo_DK"] = "wxLANGUAGE_FAEROESE_DENMARK",
["fo_FO"] = "wxLANGUAGE_FAEROESE_FAROE_ISLANDS",
["fr_BE"] = "wxLANGUAGE_FRENCH_BELGIAN",
["fr_CA"] = "wxLANGUAGE_FRENCH_CANADIAN",
["fr_CH"] = "wxLANGUAGE_FRENCH_SWISS",
["fy"] = "wxLANGUAGE_FRISIAN",
["fy_NL"] = "wxLANGUAGE_FRISIAN_NETHERLANDS",
["gd"] = "wxLANGUAGE_SCOTS_GAELIC",
["gd_GB"] = "wxLANGUAGE_SCOTS_GAELIC_UK",
["haw_US"] = "wxLANGUAGE_HAWAIIAN_US",
["it_CH"] = "wxLANGUAGE_ITALIAN_SWISS",
["jv@latin"] = "wxLANGUAGE_JAVANESE_LATIN",
["jv_ID@latin"] = "wxLANGUAGE_JAVANESE_LATIN_INDONESIA",
["kr"] = "wxLANGUAGE_KANURI",
["ku@arabic"] = "wxLANGUAGE_CENTRAL_KURDISH_ARABIC",
["ku_IQ@arabic"] = "wxLANGUAGE_CENTRAL_KURDISH_ARABIC_IRAQ",
["kw_GB"] = "wxLANGUAGE_CORNISH_UK",
["ky"] = "wxLANGUAGE_KIRGHIZ",
["ky_KG"] = "wxLANGUAGE_KIRGHIZ_KYRGYZSTAN",
["lkt_US"] = "wxLANGUAGE_LAKOTA_US",
["lo"] = "wxLANGUAGE_LAOTHIAN",
["lo_LA"] = "wxLANGUAGE_LAOTHIAN_LAOS",
["mni"] = "wxLANGUAGE_MANIPURI",
["mni@bengali"] = "wxLANGUAGE_MANIPURI_BENGALI",
["mni_IN"] = "wxLANGUAGE_MANIPURI_INDIA",
["mn@cyrillic"] = "wxLANGUAGE_MONGOLIAN_CYRILLIC",
["mn@mongolian"] = "wxLANGUAGE_MONGOLIAN_TRADITIONAL",
["mn_CN@mongolian"] = "wxLANGUAGE_MONGOLIAN_TRADITIONAL_CHINA",
["mn_MN@mongolian"] = "wxLANGUAGE_MONGOLIAN_TRADITIONAL_MONGOLIA",
["nl_BE"] = "wxLANGUAGE_DUTCH_BELGIAN",
["pa@arabic"] = "wxLANGUAGE_PUNJABI_ARABIC",
["pa@gurmukhi"] = "wxLANGUAGE_PUNJABI_GURMUKHI",
["pt_BR"] = "wxLANGUAGE_PORTUGUESE_BRAZILIAN",
["quc@latin"] = "wxLANGUAGE_KICHE_LATIN",
["rm"] = "wxLANGUAGE_RHAETO_ROMANCE",
["rm_CH"] = "wxLANGUAGE_RHAETO_ROMANCE_SWITZERLAND",
["rn"] = "wxLANGUAGE_KIRUNDI",
["rn_BI"] = "wxLANGUAGE_KIRUNDI_BURUNDI",
["sd@arabic"] = "wxLANGUAGE_SINDHI_ARABIC",
["se"] = "wxLANGUAGE_SAMI",
["se_FI"] = "wxLANGUAGE_SAMI_FINLAND",
["se_NO"] = "wxLANGUAGE_SAMI_NORWAY",
["se_SE"] = "wxLANGUAGE_SAMI_SWEDEN",
["sg"] = "wxLANGUAGE_SANGHO",
["sg_CF"] = "wxLANGUAGE_SANGHO_CENTRAL_AFRICAN_REPUBLIC",
["si"] = "wxLANGUAGE_SINHALESE",
["si_LK"] = "wxLANGUAGE_SINHALESE_SRI_LANKA",
["sw"] = "wxLANGUAGE_SWAHILI",
["sw_CD"] = "wxLANGUAGE_SWAHILI_CONGO_DRC",
["sw_KE"] = "wxLANGUAGE_SWAHILI_KENYA",
["sw_TZ"] = "wxLANGUAGE_SWAHILI_TANZANIA",
["sw_UG"] = "wxLANGUAGE_SWAHILI_UGANDA",
["to"] = "wxLANGUAGE_TONGA",
["to_TO"] = "wxLANGUAGE_TONGA_TONGA",
["ts"] = "wxLANGUAGE_TSONGA",
["ts_ZA"] = "wxLANGUAGE_TSONGA_SOUTH_AFRICA",
["ug"] = "wxLANGUAGE_UIGHUR",
["ug_CN"] = "wxLANGUAGE_UIGHUR_CHINA",
["xh"] = "wxLANGUAGE_XHOSA",
["xh_ZA"] = "wxLANGUAGE_XHOSA_SOUTH_AFRICA",
["zu"] = "wxLANGUAGE_ZULU",
["zu_ZA"] = "wxLANGUAGE_ZULU_SOUTH_AFRICA",
["zh@Hans"] = "wxLANGUAGE_CHINESE_SIMPLIFIED_EXPLICIT",
["zh@Hant"] = "wxLANGUAGE_CHINESE_TRADITIONAL_EXPLICIT",
["zh_CN"] = "wxLANGUAGE_CHINESE_CHINA",
["zh_HK"] = "wxLANGUAGE_CHINESE_HONGKONG",
["zh_HK@Hans"] = "wxLANGUAGE_CHINESE_SIMPLIFIED_HONGKONG",
["zh_MO"] = "wxLANGUAGE_CHINESE_MACAO",
["zh_MO@Hans"] = "wxLANGUAGE_CHINESE_SIMPLIFIED_MACAO",
["zh_SG"] = "wxLANGUAGE_CHINESE_SINGAPORE",
["zh_TW"] = "wxLANGUAGE_CHINESE_TAIWAN"
}
end
--?? ["kr@latin"] = "wxLANGUAGE_KANURI_LATIN",
--?? ["mn_MN"] = "wxLANGUAGE_MONGOLIAN_MONGOLIA",
function split(str, character)
result = {}
index = 1
for s in string.gmatch(str .. character, "(.-)"..character) do
result[index] = s
index = index + 1
end
return result
end
function string.tohex(str)
return (str:gsub('.', function (c)
cbyte = string.byte(c)
if cbyte >= 20 and cbyte < 127 then
return c
else
return string.format('\\%03o', string.byte(c))
end
end))
end
function string.fromhex(str)
return (str:gsub('..', function (cc)
return tonumber(cc, 16)
end))
end
script2alias = scriptmap();
locid2wxid = initmap()
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')
fo1:write("create table if not exists win_localetable (locid char, wxlocid char, wxname char, wxlocidold char, wxnameold char, englishdisplay char, englishlanguage char, englishcountry char, scripts char, country3 char, script4 char, currency char, layout char, idlang char, idsublang char, nativedisplay char, nativelanguage char, nativecountry char, nativedisplayhex char, nativelanguagehex char, nativecountryhex char, primary key (locid));\n")
fo1:write('delete from win_localetable;\nbegin;\n')
count = 0
for line in io.lines(codeFileName) do
rem = string.sub(line,1,1)
if rem ~= "#" then
values = split(line, "|")
-- Column names and descriptions
-- 1 LOCALE_SNAME, // Tag identifying the locale
-- 2 LOCALE_SENGLISHDISPLAYNAME, // English locale name (example: "German (Germany)"
-- 3 LOCALE_SENGLISHLANGUAGENAME, // English language name
-- 4 LOCALE_SENGLISHCOUNTRYNAME, // English country name
-- 5 LOCALE_SSCRIPTS, // List of scripts
-- LOCALE_SISOCTRYNAME2
-- 6 LOCALE_SINTLSYMBOL, // Currency symbol ISO
-- 7 LOCALE_IREADINGLAYOUT, // Layout direction 0=LTR, 1=RTL, 2=TTB-RTL or LTR, 3=TTB-LTR
-- 8 LOCALE_ILANGUAGE, // Numeric language code
-- 9 LOCALE_SNATIVEDISPLAYNAME, // Native locale name (example: "Deutsch (Deutschland)"
-- 10 LOCALE_SNATIVELANGUAGENAME, // Native language name
-- 11 LOCALE_SNATIVECOUNTRYNAME // Native country name
locid = values[1]
-- Extract language, script, and region
sep1, sep2 = string.find(locid, "-")
if sep1 ~= nil then
lcid = string.sub(locid, 1, sep1-1)
ccid = string.sub(locid, sep2+1)
sep1, sep2 = string.find(ccid, "-")
if sep1 ~= nil then
script = string.sub(ccid, 1, sep1-1)
if #script < 4 then
temp = script
script = string.sub(ccid, sep2+1)
ccid = temp
else
ccid = string.sub(ccid, sep2+1)
end
else
if #ccid >= 4 then
script = ccid
ccid = ""
else
script = ""
end
end
else
lcid = locid
script = ""
ccid = ""
end
ENGLISHDISPLAYNAME = values[2]
ENGLISHDISPLAYNAME = ENGLISHDISPLAYNAME:gsub("&", "and")
ENGLISHDISPLAYNAME = ENGLISHDISPLAYNAME:gsub("'", "''")
ENGLISHDISPLAYNAMEHEX = string.tohex(ENGLISHDISPLAYNAME)
if ENGLISHDISPLAYNAME ~= ENGLISHDISPLAYNAMEHEX then
print('*** ' .. locid .. ' - Display name contains non-ASCII characters')
end
ENGLISHLANGUAGENAME = values[3]
ENGLISHLANGUAGENAME = ENGLISHLANGUAGENAME:gsub("'", "''")
ENGLISHCOUNTRYNAME = values[4]
ENGLISHCOUNTRYNAME = ENGLISHCOUNTRYNAME:gsub("'", "''")
ENGLISHCOUNTRYNAME = ENGLISHCOUNTRYNAME:gsub("&", "and")
SCRIPTS = values[5]
if SCRIPTS ~= nil and #SCRIPTS > 4 then
local b = string.find(SCRIPTS, ';')
script4 = string.sub(SCRIPTS,1,b-1)
else
scripts4 = ''
end
COUNTRY3 = values[6]
CURRENCY = values[7]
LAYOUT = values[8]
if LAYOUT ~= '1' then
LAYOUT = 'LTR'
else
LAYOUT = 'RTL'
end
LCID = values[9]
lcidnum = tonumber('0x'..LCID)
lcidnum = lcidnum % 65536
divisor = 1024
idlang = lcidnum % divisor
idsublang = (lcidnum - idlang) / divisor
idlang = string.format("0x%02x", idlang)
idsublang = string.format("0x%02x", idsublang)
-- Clean up names
-- Replace single apostroph by 2 apostrophes (SQL requirement)
NATIVEDISPLAYNAME = values[10]
NATIVEDISPLAYNAME = NATIVEDISPLAYNAME:gsub("'", "''")
NATIVEDISPLAYNAMEHEX = string.tohex(NATIVEDISPLAYNAME)
NATIVELANGUAGENAME = values[11]
NATIVELANGUAGENAME = NATIVELANGUAGENAME:gsub("'", "''")
NATIVELANGUAGENAMEHEX = string.tohex(NATIVELANGUAGENAME)
NATIVECOUNTRYNAME = values[12]
NATIVECOUNTRYNAME = NATIVECOUNTRYNAME:gsub("'", "''")
NATIVECOUNTRYNAMEHEX = string.tohex(NATIVECOUNTRYNAME)
-- Replace common characters with accents by the base character
-- Needed to generate pure ASCII identifier for wxLANGUAGE symbols
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAME
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("é", "e")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("ô", "o")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("", "")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("'", "")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("-", "_")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("å", "a")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("ç", "c")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("ã", "a")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("Å", "A")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("ü", "u")
ENGLISHLANGUAGENAMEASC = ENGLISHLANGUAGENAMEASC:gsub("ʼ", "")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAME
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("é", "e")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("ô", "o")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("", "")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("'", "")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("%.", "")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("-", "_")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("å", "a")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("ç", "c")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("ã", "a")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("Å", "A")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("ü", "u")
ENGLISHCOUNTRYNAMEASC = ENGLISHCOUNTRYNAMEASC:gsub("í", "i")
-- Generate wxLANGUAGE symbol
locidnew = lcid
WXNAME = 'wxLANGUAGE_' .. string.upper(ENGLISHLANGUAGENAMEASC)
if #ccid > 0 then
locidnew = locidnew .. '_' .. ccid
WXNAME = WXNAME .. '_' .. string.upper(ENGLISHCOUNTRYNAMEASC)
end
-- Append script alias to locale identifier
if #script > 0 then
mappedscript = script2alias[script]
if mappedscript ~= nil then
scriptold = script
script = mappedscript
else
mappedscript = 'n/a'
end
locidnew = locidnew .. '@' .. script
-- print('-- New script: ' .. script .. ' - ' .. mappedscript .. ' ' .. locidnew)
end
-- Replace blank characters by underscore
-- Remove parentheses and commas
WXNAME = WXNAME:gsub(" ", "_")
WXNAME = WXNAME:gsub("%(", "")
WXNAME = WXNAME:gsub("%)", "")
WXNAME = WXNAME:gsub("%,", "")
-- Force specific wxLANGUAGE name for listed locale ids (compatibility with prior wxWidgets versions)
mappedwxname = locid2wxid[locidnew]
if mappedwxname ~= nil then
WXNAME = mappedwxname
else
mappedwxname = 'n/a'
end
-- print('-- ' .. locidnew .. ' ' .. WXNAME .. ' ' .. mappedwxname)
-- Force columnar output by appending blank characters
SWXNAME = string.format("%-55s", WXNAME)
slocid = string.format("%-14s", locidnew)
sidlang = string.format("%-4s", idlang)
sidsublang = string.format("%-4s", idsublang)
fo1:write("insert into win_localetable values ('" .. locid .. "', '" .. locidnew .. "', '" .. WXNAME .. "', '-', '-', '" .. string.tohex(ENGLISHDISPLAYNAME) .. "', '" .. string.tohex(ENGLISHLANGUAGENAME) .. "', '" .. string.tohex(ENGLISHCOUNTRYNAME) .. "', '" .. SCRIPTS .. "', '" .. COUNTRY3 .. "', '" .. script4 .. "', '" .. CURRENCY .. "', '" .. LAYOUT .. "', '" .. sidlang .. "', '" .. sidsublang .. "', '" .. NATIVEDISPLAYNAME .. "', '" .. NATIVELANGUAGENAME .. "', '" .. NATIVECOUNTRYNAME .. "', '" .. NATIVEDISPLAYNAMEHEX .. "', '" .. NATIVELANGUAGENAMEHEX .. "', '" .. NATIVECOUNTRYNAMEHEX .. "');\n")
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 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 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 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 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")
-- Update count to reflect manual entries (needs to be updated, if entries are added or removed)
count = count + 23
print("Number of locales=" .. count)
fo1:write('commit;\n')
fo1:close()
fo2:close()