mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-28 19:01:31 +02:00
Use CLDR for a translated language list in the localized name field instead of untranslated wmf site matrix (close #2457)
Translate language names in the community index list (close #4990)
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { dispatch as d3_dispatch } from 'd3-dispatch';
|
||||
import { select as d3_select, event as d3_event } from 'd3-selection';
|
||||
|
||||
import { t } from '../../util/locale';
|
||||
import { dataWikipedia } from '../../../data';
|
||||
import { t, languageName } from '../../util/locale';
|
||||
import { dataLanguages } from '../../../data';
|
||||
import { services } from '../../services';
|
||||
import { svgIcon } from '../../svg';
|
||||
import { tooltip } from '../../util/tooltip';
|
||||
@@ -10,6 +10,20 @@ import { uiCombobox } from '../combobox';
|
||||
import { utilDetect } from '../../util/detect';
|
||||
import { utilEditDistance, utilGetSetValue, utilNoAuto, utilRebind } from '../../util';
|
||||
|
||||
var languagesArray = [];
|
||||
function loadLanguagesArray() {
|
||||
if (languagesArray.length !== 0) return;
|
||||
|
||||
for (var code in dataLanguages) {
|
||||
languagesArray.push({
|
||||
localName: languageName(code, { localOnly: true }),
|
||||
nativeName: dataLanguages[code].nativeName,
|
||||
code: code,
|
||||
label: languageName(code)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export function uiFieldLocalized(field, context) {
|
||||
var dispatch = d3_dispatch('change', 'input');
|
||||
@@ -92,6 +106,9 @@ export function uiFieldLocalized(field, context) {
|
||||
|
||||
|
||||
function localized(selection) {
|
||||
// load if needed
|
||||
loadLanguagesArray();
|
||||
|
||||
_selection = selection;
|
||||
calcLocked();
|
||||
var isLocked = field.locked();
|
||||
@@ -340,12 +357,13 @@ export function uiFieldLocalized(field, context) {
|
||||
function changeLang(d) {
|
||||
var lang = utilGetSetValue(d3_select(this));
|
||||
var t = {};
|
||||
var language = dataWikipedia.find(function(d) {
|
||||
return d[0].toLowerCase() === lang.toLowerCase() ||
|
||||
d[1].toLowerCase() === lang.toLowerCase();
|
||||
var language = languagesArray.find(function(d) {
|
||||
return (d.localName && d.localName.toLowerCase() === lang.toLowerCase()) ||
|
||||
d.label.toLowerCase() === lang.toLowerCase() ||
|
||||
(d.nativeName && d.nativeName.toLowerCase() === lang.toLowerCase());
|
||||
});
|
||||
|
||||
if (language) lang = language[2];
|
||||
if (language) lang = language.code;
|
||||
|
||||
if (d.lang && d.lang !== lang) {
|
||||
t[key(d.lang)] = undefined;
|
||||
@@ -378,12 +396,13 @@ export function uiFieldLocalized(field, context) {
|
||||
function fetchLanguages(value, cb) {
|
||||
var v = value.toLowerCase();
|
||||
|
||||
cb(dataWikipedia.filter(function(d) {
|
||||
return d[0].toLowerCase().indexOf(v) >= 0 ||
|
||||
d[1].toLowerCase().indexOf(v) >= 0 ||
|
||||
d[2].toLowerCase().indexOf(v) >= 0;
|
||||
cb(languagesArray.filter(function(d) {
|
||||
return d.label.toLowerCase().indexOf(v) >= 0 ||
|
||||
(d.localName && d.localName.toLowerCase().indexOf(v) >= 0) ||
|
||||
(d.nativeName && d.nativeName.toLowerCase().indexOf(v) >= 0) ||
|
||||
d.code.toLowerCase().indexOf(v) >= 0;
|
||||
}).map(function(d) {
|
||||
return { value: d[1] };
|
||||
return { value: d.label };
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -482,8 +501,7 @@ export function uiFieldLocalized(field, context) {
|
||||
entries.order();
|
||||
|
||||
utilGetSetValue(entries.select('.localized-lang'), function(d) {
|
||||
var lang = dataWikipedia.find(function(lang) { return lang[2] === d.lang; });
|
||||
return lang ? lang[1] : d.lang;
|
||||
return languageName(d.lang);
|
||||
});
|
||||
|
||||
utilGetSetValue(entries.select('.localized-value'),
|
||||
|
||||
Reference in New Issue
Block a user