[QLocaleData] Extract defaultContent locales
This adds some locales missing in the common/main/ directory, namely: bss_CM, cch_NG, dv_MV, gaa_GH, gez_ET, ha_Arab_NG, iu_Cans_CA, kaj_NG, kcg_NG, kpe_LR, ku_Latn_TR, mi_NZ, ms_Arab_MY, mn_Mong_CN, nds_DE, ny_MW, oc_FR, sa_IN, sid_ET, tk_Latn_TM, trv_TW, tt_RU, ug_Arab_CN, wa_BE, wo_Latn_SN See http://www.unicode.org/reports/tr35/tr35-info.html#Default_Content for more info. Change-Id: I6b3082d370a21da64fbd5e72ab6344e1d7a6a3c9 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
parent
f50841cc8b
commit
7946b83ace
File diff suppressed because it is too large
Load Diff
@ -2206,6 +2206,7 @@ void tst_QLocale::textDirection_data()
|
|||||||
case QLocale::Kashmiri:
|
case QLocale::Kashmiri:
|
||||||
case QLocale::Persian:
|
case QLocale::Persian:
|
||||||
case QLocale::Pashto:
|
case QLocale::Pashto:
|
||||||
|
case QLocale::Uighur:
|
||||||
case QLocale::Urdu:
|
case QLocale::Urdu:
|
||||||
case QLocale::Syriac:
|
case QLocale::Syriac:
|
||||||
case QLocale::Divehi:
|
case QLocale::Divehi:
|
||||||
|
@ -115,8 +115,6 @@ def fixOrdStrList(c):
|
|||||||
return str(ord(';'))
|
return str(ord(';'))
|
||||||
|
|
||||||
def generateLocaleInfo(path):
|
def generateLocaleInfo(path):
|
||||||
(dir_name, file_name) = os.path.split(path)
|
|
||||||
|
|
||||||
if not path.endswith(".xml"):
|
if not path.endswith(".xml"):
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
@ -126,13 +124,20 @@ def generateLocaleInfo(path):
|
|||||||
raise xpathlite.Error("alias to \"%s\"" % alias)
|
raise xpathlite.Error("alias to \"%s\"" % alias)
|
||||||
|
|
||||||
language_code = findEntryInFile(path, "identity/language", attribute="type")[0]
|
language_code = findEntryInFile(path, "identity/language", attribute="type")[0]
|
||||||
if language_code == 'root':
|
|
||||||
# just skip it
|
|
||||||
return {}
|
|
||||||
country_code = findEntryInFile(path, "identity/territory", attribute="type")[0]
|
country_code = findEntryInFile(path, "identity/territory", attribute="type")[0]
|
||||||
script_code = findEntryInFile(path, "identity/script", attribute="type")[0]
|
script_code = findEntryInFile(path, "identity/script", attribute="type")[0]
|
||||||
variant_code = findEntryInFile(path, "identity/variant", attribute="type")[0]
|
variant_code = findEntryInFile(path, "identity/variant", attribute="type")[0]
|
||||||
|
|
||||||
|
return _generateLocaleInfo(path, language_code, script_code, country_code, variant_code)
|
||||||
|
|
||||||
|
def _generateLocaleInfo(path, language_code, script_code, country_code, variant_code=""):
|
||||||
|
if not path.endswith(".xml"):
|
||||||
|
return {}
|
||||||
|
|
||||||
|
if language_code == 'root':
|
||||||
|
# just skip it
|
||||||
|
return {}
|
||||||
|
|
||||||
# we do not support variants
|
# we do not support variants
|
||||||
# ### actually there is only one locale with variant: en_US_POSIX
|
# ### actually there is only one locale with variant: en_US_POSIX
|
||||||
# does anybody care about it at all?
|
# does anybody care about it at all?
|
||||||
@ -175,6 +180,7 @@ def generateLocaleInfo(path):
|
|||||||
result['script_id'] = script_id
|
result['script_id'] = script_id
|
||||||
result['country_id'] = country_id
|
result['country_id'] = country_id
|
||||||
|
|
||||||
|
(dir_name, file_name) = os.path.split(path)
|
||||||
supplementalPath = dir_name + "/../supplemental/supplementalData.xml"
|
supplementalPath = dir_name + "/../supplemental/supplementalData.xml"
|
||||||
currencies = findTagsInFile(supplementalPath, "currencyData/region[iso3166=%s]"%country_code);
|
currencies = findTagsInFile(supplementalPath, "currencyData/region[iso3166=%s]"%country_code);
|
||||||
result['currencyIsoCode'] = ''
|
result['currencyIsoCode'] = ''
|
||||||
@ -562,6 +568,41 @@ if not os.path.isdir(cldr_dir):
|
|||||||
cldr_files = os.listdir(cldr_dir)
|
cldr_files = os.listdir(cldr_dir)
|
||||||
|
|
||||||
locale_database = {}
|
locale_database = {}
|
||||||
|
|
||||||
|
# see http://www.unicode.org/reports/tr35/tr35-info.html#Default_Content
|
||||||
|
defaultContent_locales = {}
|
||||||
|
for ns in findTagsInFile(cldr_dir + "/../supplemental/supplementalMetadata.xml", "metadata/defaultContent"):
|
||||||
|
for data in ns[1:][0]:
|
||||||
|
if data[0] == u"locales":
|
||||||
|
defaultContent_locales = data[1].split()
|
||||||
|
|
||||||
|
for file in defaultContent_locales:
|
||||||
|
items = file.split("_")
|
||||||
|
if len(items) == 3:
|
||||||
|
language_code = items[0]
|
||||||
|
script_code = items[1]
|
||||||
|
country_code = items[2]
|
||||||
|
else:
|
||||||
|
if len(items) != 2:
|
||||||
|
sys.stderr.write("skipping defaultContent locale \"" + file + "\"\n")
|
||||||
|
continue
|
||||||
|
language_code = items[0]
|
||||||
|
script_code = ""
|
||||||
|
country_code = items[1]
|
||||||
|
if len(country_code) == 4:
|
||||||
|
sys.stderr.write("skipping defaultContent locale \"" + file + "\"\n")
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
l = _generateLocaleInfo(cldr_dir + "/" + file + ".xml", language_code, script_code, country_code)
|
||||||
|
if not l:
|
||||||
|
sys.stderr.write("skipping defaultContent locale \"" + file + "\"\n")
|
||||||
|
continue
|
||||||
|
except xpathlite.Error as e:
|
||||||
|
sys.stderr.write("skipping defaultContent locale \"%s\" (%s)\n" % (file, str(e)))
|
||||||
|
continue
|
||||||
|
|
||||||
|
locale_database[(l['language_id'], l['script_id'], l['country_id'], l['variant_code'])] = l
|
||||||
|
|
||||||
for file in cldr_files:
|
for file in cldr_files:
|
||||||
try:
|
try:
|
||||||
l = generateLocaleInfo(cldr_dir + "/" + file)
|
l = generateLocaleInfo(cldr_dir + "/" + file)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user