Prioritize the user's language and territory languages in the multilingual name suggestion list (close #6712)

This commit is contained in:
Quincy Morgan
2019-08-08 16:21:06 -05:00
parent c28f0437e5
commit 5742e58ff6
5 changed files with 316 additions and 3 deletions
+23
View File
@@ -70,6 +70,7 @@ module.exports = function buildData() {
'data/presets/presets.json',
'data/presets.yaml',
'data/taginfo.json',
'data/territory-languages.json',
'dist/locales/en.json',
'svg/fontawesome/*.svg',
]);
@@ -80,6 +81,7 @@ module.exports = function buildData() {
var defaults = read('data/presets/defaults.json');
var translations = generateTranslations(fields, presets, tstrings);
var taginfo = generateTaginfo(presets, fields);
var territoryLanguages = generateTerritoryLanguages();
// Additional consistency checks
validateCategoryPresets(categories, presets);
@@ -108,6 +110,10 @@ module.exports = function buildData() {
'data/taginfo.json',
prettyStringify(taginfo, { maxLength: 9999 })
),
writeFileProm(
'data/territory-languages.json',
prettyStringify({ dataTerritoryLanguages: territoryLanguages }, { maxLength: 9999 })
),
writeEnJson(tstrings),
writeFaIcons(faIcons),
writeTnpIcons(tnpIcons)
@@ -564,6 +570,23 @@ function generateTaginfo(presets, fields) {
return taginfo;
}
function generateTerritoryLanguages() {
var allRawInfo = read('./node_modules/cldr-core/supplemental/territoryInfo.json').supplemental.territoryInfo;
var territoryLanguages = {};
Object.keys(allRawInfo).forEach(function(territoryCode) {
var territoryLangInfo = allRawInfo[territoryCode].languagePopulation;
if (!territoryLangInfo) return;
var langCodes = Object.keys(territoryLangInfo);
territoryLanguages[territoryCode.toLowerCase()] = langCodes.sort(function(langCode1, langCode2) {
return parseFloat(territoryLangInfo[langCode2]._populationPercent) -
parseFloat(territoryLangInfo[langCode1]._populationPercent);
}).map(function(langCode) {
return langCode.replace('_', '-');
});
});
return territoryLanguages;
}
function validateCategoryPresets(categories, presets) {
Object.keys(categories).forEach(function(id) {
var category = categories[id];