From 567eeac58736fdaecaf4026ffee0a40215d3b0ea Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 28 Jan 2020 22:21:31 -0500 Subject: [PATCH] Make several data external instead of bundled: Also dist/data/* contains minified files now These are now external and will fetch as needed: -export { dataAddressFormats } from './address-formats.json'; -export { dataDeprecated } from './deprecated.json'; -export { dataDiscarded } from './discarded.json'; -export { dataLanguages } from './languages.json'; -export { dataPhoneFormats } from './phone-formats.json'; -export { dataShortcuts } from './shortcuts.json'; -export { dataTerritoryLanguages } from './territory-languages.json'; --- .gitignore | 1 + data/address-formats.json | 184 -- data/address_formats.json | 182 ++ data/deprecated.json | 2734 ++++++++--------- data/discarded.json | 94 +- data/index.js | 8 - {dist/data => data}/intro_graph.json | 0 data/languages.json | 960 ++---- data/locales.json | 1 + data/phone-formats.json | 65 - data/phone_formats.json | 63 + data/shortcuts.json | 682 ++-- data/territory-languages.json | 260 -- data/territory_languages.json | 258 ++ modules/actions/discard_tags.js | 45 +- modules/actions/merge_remote_changes.js | 6 +- modules/core/data.js | 11 +- modules/modes/save.js | 15 +- modules/osm/entity.js | 5 +- modules/ui/commit_changes.js | 11 +- modules/ui/fields/address.js | 20 +- modules/ui/fields/combo.js | 9 +- modules/ui/fields/input.js | 10 +- modules/ui/fields/localized.js | 76 +- modules/ui/intro/intro.js | 3 +- modules/ui/shortcuts.js | 23 +- modules/ui/success.js | 2 +- modules/util/locale.js | 28 +- modules/validations/outdated_tags.js | 8 +- modules/validations/suspicious_name.js | 4 +- scripts/build_data.js | 40 +- scripts/update_locales.js | 31 +- ...{intro_graph.json => intro_graph.min.json} | 0 test/spec/actions/discard_tags.js | 10 +- test/spec/actions/merge_remote_changes.js | 56 +- test/spec/core/data.js | 51 +- test/spec/osm/entity.js | 24 +- test/spec/spec_helpers.js | 2 + test/spec/ui/fields/localized.js | 14 + test/spec/validations/outdated_tags.js | 12 + 40 files changed, 2815 insertions(+), 3193 deletions(-) delete mode 100644 data/address-formats.json create mode 100644 data/address_formats.json rename {dist/data => data}/intro_graph.json (100%) delete mode 100644 data/phone-formats.json create mode 100644 data/phone_formats.json delete mode 100644 data/territory-languages.json create mode 100644 data/territory_languages.json rename test/data/{intro_graph.json => intro_graph.min.json} (100%) diff --git a/.gitignore b/.gitignore index 60923a521..986bc9ad1 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ transifex.auth /dist/*.js /dist/*.css /dist/*.map +/dist/data/ /dist/img/*.svg /dist/mapillary-js/ /dist/pannellum-streetside/ diff --git a/data/address-formats.json b/data/address-formats.json deleted file mode 100644 index ffa861db1..000000000 --- a/data/address-formats.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "dataAddressFormats": [ - { - "format": [ - ["housenumber", "street"], - ["city", "postcode"] - ] - }, - { - "countryCodes": ["au"], - "format": [ - ["unit","housenumber", "street"], - ["suburb", "state", "postcode"] - ] - }, - { - "countryCodes": ["gb"], - "format": [ - ["housename"], - ["housenumber", "street"], - ["city", "postcode"] - ] - }, - { - "countryCodes": ["ie"], - "format": [ - ["housename"], - ["housenumber", "street"], - ["city"], - ["postcode"] - ] - }, - { - "countryCodes": ["at", "ch", "de", "si", "pl"], - "format": [ - ["street", "housenumber"], - ["postcode", "city"] - ] - }, - { - "countryCodes": [ - "ad", "ba", "be", "cz", "dk", "es", "fi", "gr", "hr", "is", - "it", "li", "nl", "no", "pt", "se", "sk", "sm", "va" - ], - "format": [ - ["street", "housenumber", "unit"], - ["postcode", "city"] - ] - }, - { - "countryCodes": ["fr", "lu", "mo"], - "format": [ - ["housenumber", "street"], - ["postcode", "city"] - ] - }, - { - "countryCodes": ["br"], - "format": [ - ["street"], - ["housenumber", "suburb"], - ["city", "postcode"] - ] - }, - { - "countryCodes": ["vn"], - "format": [ - ["housenumber", "street"], - ["subdistrict"], - ["district"], - ["city"], - ["province", "postcode"] - ] - }, - { - "countryCodes": ["ca"], - "format": [ - ["housenumber", "street", "unit"], - ["city", "province", "postcode"] - ] - }, - { - "countryCodes": ["us"], - "format": [ - ["housenumber", "street", "unit"], - ["city", "state", "postcode"] - ] - }, - { - "countryCodes": ["tw"], - "format": [ - ["postcode", "city", "district"], - ["place", "street"], - ["housenumber", "floor", "unit"] - ] - }, - { - "countryCodes": ["jp"], - "format": [ - ["postcode", "province", "county"], - ["city", "suburb"], - ["quarter", "neighbourhood"], - ["block_number", "housenumber"] - ], - "dropdowns": [ - "postcode", "province", "county", "city", "suburb", - "quarter", "neighbourhood", "block_number" - ], - "widths": { - "postcode": 0.3, - "province": 0.35, - "county": 0.35, - "city": 0.65, - "suburb": 0.35, - "quarter": 0.5, - "neighbourhood": 0.5, - "block_number": 0.5, - "housenumber": 0.5 - } - }, - { - "countryCodes": ["tr"], - "format": [ - ["neighbourhood"], - ["street", "housenumber"], - ["postcode", "district", "city"] - ] - }, - { - "countryCodes": ["ua"], - "format": [ - ["housenumber", "postcode"], - ["street"] - ] - }, - { - "countryCodes": ["cn"], - "format": [ - ["postcode", "province"], - ["city", "district"], - ["street", "housenumber"] - ], - "widths": { - "postcode": 0.3, - "province": 0.7, - "city": 0.5, - "district": 0.5, - "street": 0.7, - "housenumber": 0.3 - } - }, - { - "countryCodes": ["bo"], - "format": [ - ["street", "housenumber"], - ["neighbourhood", "city"] - ], - "widths": { - "street": 0.7, - "housenumber": 0.3, - "neighbourhood": 0.5, - "city": 0.5 - } - }, - { - "countryCodes": ["pe"], - "format": [ - ["street", "housenumber"], - ["neighbourhood"], - ["city", "state", "postcode"] - ], - "dropdowns": [ - "street", "neighbourhood", "city", "state", "postcode" - ], - "widths": { - "street": 0.7, - "housenumber": 0.3, - "city": 0.4, - "state": 0.4, - "postcode": 0.2 - } - } - ] -} diff --git a/data/address_formats.json b/data/address_formats.json new file mode 100644 index 000000000..60784f329 --- /dev/null +++ b/data/address_formats.json @@ -0,0 +1,182 @@ +[ + { + "format": [ + ["housenumber", "street"], + ["city", "postcode"] + ] + }, + { + "countryCodes": ["au"], + "format": [ + ["unit","housenumber", "street"], + ["suburb", "state", "postcode"] + ] + }, + { + "countryCodes": ["gb"], + "format": [ + ["housename"], + ["housenumber", "street"], + ["city", "postcode"] + ] + }, + { + "countryCodes": ["ie"], + "format": [ + ["housename"], + ["housenumber", "street"], + ["city"], + ["postcode"] + ] + }, + { + "countryCodes": ["at", "ch", "de", "si", "pl"], + "format": [ + ["street", "housenumber"], + ["postcode", "city"] + ] + }, + { + "countryCodes": [ + "ad", "ba", "be", "cz", "dk", "es", "fi", "gr", "hr", "is", + "it", "li", "nl", "no", "pt", "se", "sk", "sm", "va" + ], + "format": [ + ["street", "housenumber", "unit"], + ["postcode", "city"] + ] + }, + { + "countryCodes": ["fr", "lu", "mo"], + "format": [ + ["housenumber", "street"], + ["postcode", "city"] + ] + }, + { + "countryCodes": ["br"], + "format": [ + ["street"], + ["housenumber", "suburb"], + ["city", "postcode"] + ] + }, + { + "countryCodes": ["vn"], + "format": [ + ["housenumber", "street"], + ["subdistrict"], + ["district"], + ["city"], + ["province", "postcode"] + ] + }, + { + "countryCodes": ["ca"], + "format": [ + ["housenumber", "street", "unit"], + ["city", "province", "postcode"] + ] + }, + { + "countryCodes": ["us"], + "format": [ + ["housenumber", "street", "unit"], + ["city", "state", "postcode"] + ] + }, + { + "countryCodes": ["tw"], + "format": [ + ["postcode", "city", "district"], + ["place", "street"], + ["housenumber", "floor", "unit"] + ] + }, + { + "countryCodes": ["jp"], + "format": [ + ["postcode", "province", "county"], + ["city", "suburb"], + ["quarter", "neighbourhood"], + ["block_number", "housenumber"] + ], + "dropdowns": [ + "postcode", "province", "county", "city", "suburb", + "quarter", "neighbourhood", "block_number" + ], + "widths": { + "postcode": 0.3, + "province": 0.35, + "county": 0.35, + "city": 0.65, + "suburb": 0.35, + "quarter": 0.5, + "neighbourhood": 0.5, + "block_number": 0.5, + "housenumber": 0.5 + } + }, + { + "countryCodes": ["tr"], + "format": [ + ["neighbourhood"], + ["street", "housenumber"], + ["postcode", "district", "city"] + ] + }, + { + "countryCodes": ["ua"], + "format": [ + ["housenumber", "postcode"], + ["street"] + ] + }, + { + "countryCodes": ["cn"], + "format": [ + ["postcode", "province"], + ["city", "district"], + ["street", "housenumber"] + ], + "widths": { + "postcode": 0.3, + "province": 0.7, + "city": 0.5, + "district": 0.5, + "street": 0.7, + "housenumber": 0.3 + } + }, + { + "countryCodes": ["bo"], + "format": [ + ["street", "housenumber"], + ["neighbourhood", "city"] + ], + "widths": { + "street": 0.7, + "housenumber": 0.3, + "neighbourhood": 0.5, + "city": 0.5 + } + }, + { + "countryCodes": ["pe"], + "format": [ + ["street", "housenumber"], + ["neighbourhood"], + ["city", "state", "postcode"] + ], + "dropdowns": [ + "street", "neighbourhood", "city", "state", "postcode" + ], + "widths": { + "street": 0.7, + "housenumber": 0.3, + "city": 0.4, + "state": 0.4, + "postcode": 0.2 + } + } +] \ No newline at end of file diff --git a/data/deprecated.json b/data/deprecated.json index fc5a0b74f..85a4a3db8 100644 --- a/data/deprecated.json +++ b/data/deprecated.json @@ -1,1368 +1,1366 @@ -{ - "dataDeprecated": [ - { - "old": {"aerialway": "canopy"}, - "replace": {"aerialway": "zip_line"} - }, - { - "old": {"aeroway": "aerobridge"}, - "replace": {"aeroway": "jet_bridge", "highway": "corridor"} - }, - { - "old": {"access": "public"}, - "replace": {"access": "yes"} - }, - { - "old": {"agrarian": "agrcultural_machinry"}, - "replace": {"agrarian": "agricultural_machinery"} - }, - { - "old": {"amenity": "advertising"}, - "replace": {"advertising": "*"} - }, - { - "old": {"amenity": "artwork"}, - "replace": {"tourism": "artwork"} - }, - { - "old": {"amenity": "bail_bonds"}, - "replace": {"office": "bail_bond_agent"} - }, - { - "old": {"amenity": "car_repair"}, - "replace": {"shop": "car_repair"} - }, - { - "old": {"amenity": "changing_room"}, - "replace": {"amenity": "dressing_room"} - }, - { - "old": {"amenity": "citymap_post"}, - "replace": {"tourism": "information"} - }, - { - "old": {"amenity": "club"}, - "replace": {"club": "*"} - }, - { - "old": {"amenity": "community_center"}, - "replace": {"amenity": "community_centre"} - }, - { - "old": {"amenity": "dancing_school"}, - "replace": {"leisure": "dance", "dance:teaching": "yes" } - }, - { - "old": {"amenity": "dog_bin"}, - "replace": {"amenity": "waste_basket", "waste": "dog_excrement"} - }, - { - "old": {"amenity": "dog_waste_bin"}, - "replace": {"amenity": "waste_basket", "waste": "dog_excrement"} - }, - { - "old": {"amenity": "embassy"}, - "replace": {"office": "diplomatic"} - }, - { - "old": {"amenity": "ev_charging"}, - "replace": {"amenity": "charging_station"} - }, - { - "old": {"amenity": "fire_hydrant"}, - "replace": {"emergency": "fire_hydrant"} - }, - { - "old": {"amenity": "firepit"}, - "replace": {"leisure": "firepit"} - }, - { - "old": {"amenity": "garage"}, - "replace": {"landuse": "garages"} - }, - { - "old": {"amenity": "garages"}, - "replace": {"landuse": "garages"} - }, - { - "old": {"amenity": "gym"}, - "replace": {"leisure": "fitness_centre"} - }, - { - "old": {"amenity": "hotel"}, - "replace": {"tourism": "hotel"} - }, - { - "old": {"amenity": "kiosk"}, - "replace": {"shop": "kiosk"} - }, - { - "old": {"amenity": "nursery"}, - "replace": {"amenity": "kindergarten"} - }, - { - "old": {"amenity": "preschool"}, - "replace": {"amenity": "kindergarten", "preschool": "yes"} - }, - { - "old": {"amenity": "public_building"}, - "replace": {"building": "public"} - }, - { - "old": {"amenity": "real_estate"}, - "replace": {"office": "estate_agent"} - }, - { - "old": {"amenity": "register_office"}, - "replace": {"office": "government", "government": "register_office"} - }, - { - "old": {"amenity": "research_institution"}, - "replace": {"amenity": "research_institute"} - }, - { - "old": {"amenity": "sauna"}, - "replace": {"leisure": "sauna"} - }, - { - "old": {"amenity": "scrapyard"}, - "replace": {"landuse": "industrial", "industrial": "scrap_yard"} - }, - { - "old": {"amenity": "shop"}, - "replace": {"shop": "*"} - }, - { - "old": {"amenity": "sloped_curb"}, - "replace": {"kerb": "lowered"} - }, - { - "old": {"amenity": "swimming_pool"}, - "replace": {"leisure": "swimming_pool"} - }, - { - "old": {"amenity": "ticket_booth"}, - "replace": {"shop": "ticket"} - }, - { - "old": {"amenity": "toilet"}, - "replace": {"amenity": "toilets"} - }, - { - "old": {"amenity": "vending_machine", "vending": "news_papers"}, - "replace": {"amenity": "vending_machine", "vending": "newspapers"} - }, - { - "old": {"amenity": "weigh_bridge"}, - "replace": {"amenity": "weighbridge"} - }, - { - "old": {"amenity": "winery"}, - "replace": {"craft": "winery"} - }, - { - "old": {"amenity": "youth_center"}, - "replace": {"amenity": "community_centre", "community_centre:for": "juvenile"} - }, - { - "old": {"amenity": "youth_centre"}, - "replace": {"amenity": "community_centre", "community_centre:for": "juvenile"} - }, - { - "old": {"artwork": "*"}, - "replace": {"artwork_type": "$1"} - }, - { - "old": {"artwork:type": "*"}, - "replace": {"artwork_type": "$1"} - }, - { - "old": {"attraction": "ferris_wheel"}, - "replace": {"attraction": "big_wheel"} - }, - { - "old": {"barrier": "curb"}, - "replace": {"barrier": "kerb"} - }, - { - "old": {"barrier": "embankment"}, - "replace": {"man_made": "embankment"} - }, - { - "old": {"barrier": "railing"}, - "replace": {"barrier": "fence", "fence_type": "railing"} - }, - { - "old": {"barrier": "wall", "type": "noise_barrier"}, - "replace": {"barrier": "wall", "wall": "noise_barrier"} - }, - { - "old": {"barrier": "wire_fence"}, - "replace": {"barrier": "fence", "fence_type": "wire"} - }, - { - "old": {"barrier": "wood_fence"}, - "replace": {"barrier": "fence", "fence_type": "wood"} - }, - { - "old": {"bicycle:oneway": "*"}, - "replace": {"oneway:bicycle": "$1"} - }, - { - "old": {"building": "entrance"}, - "replace": {"entrance": "*"} - }, - { - "old": {"building": "family_house"}, - "replace": {"building": "house"} - }, - { - "old": {"building": "home"}, - "replace": {"building": "house"} - }, - { - "old": {"building": "household"}, - "replace": {"building": "house"} - }, - { - "old": {"building:color": "*"}, - "replace": {"building:colour": "$1"} - }, - { - "old": {"building:height": "*"}, - "replace": {"height": "$1"} - }, - { - "old": {"building:min_height": "*"}, - "replace": {"min_height": "$1"} - }, - { - "old": {"building:roof:colour": "*"}, - "replace": {"roof:colour": "$1"} - }, - { - "old": {"building:type": "*"}, - "replace": {"building": "$1"} - }, - { - "old": {"camp_site": "camp_pitch"}, - "replace": {"tourism": "camp_pitch"} - }, - { - "old": {"shop": "clothes", "clothes": "second_hand"}, - "replace": {"shop": "clothes", "second_hand": "yes"} - }, - { - "old": {"color": "*"}, - "replace": {"colour": "$1"} - }, - { - "old": {"company": "consulting"}, - "replace": {"office": "consulting"} - }, - { - "old": {"craft": "catering"}, - "replace": {"craft": "caterer"} - }, - { - "old": {"craft": "glass"}, - "replace": {"craft": "glaziery"} - }, - { - "old": {"craft": "jeweler"}, - "replace": {"shop": "jewelry"} - }, - { - "old": {"craft": "optician"}, - "replace": {"shop": "optician"} - }, - { - "old": {"craft": "sculpter"}, - "replace": {"craft": "sculptor"} - }, - { - "old": {"crossing": "island"}, - "replace": {"crossing:island": "yes"} - }, - { - "old": {"cuisine": "gluten-free"}, - "replace": {"diet:gluten_free": "*"} - }, - { - "old": {"cuisine": "halal"}, - "replace": {"diet:halal": "*"} - }, - { - "old": {"cuisine": "kosher"}, - "replace": {"diet:kosher": "*"} - }, - { - "old": {"cuisine": "vegan"}, - "replace": {"diet:vegan": "*"} - }, - { - "old": {"cuisine": "vegetarian"}, - "replace": {"diet:vegetarian": "*"} - }, - { - "old": {"curb": "*"}, - "replace": {"kerb": "$1"} - }, - { - "old": {"diaper": "1"}, - "replace": {"changing_table": "yes", "changing_table:count": "1"} - }, - { - "old": {"diaper": "no"}, - "replace": {"changing_table": "no"} - }, - { - "old": {"diaper": "room"}, - "replace": {"changing_table": "yes", "changing_table:location": "room"} - }, - { - "old": {"diaper": "yes"}, - "replace": {"changing_table": "yes"} - }, - { - "old": {"direction": "all"}, - "replace": {"direction": "both"} - }, - { - "old": {"direction": "down", "highway": "*"}, - "replace": {"incline": "down", "highway": "$1"} - }, - { - "old": {"direction": "downhill"}, - "replace": {"incline": "down"} - }, - { - "old": {"direction": "East"}, - "replace": {"direction": "E"} - }, - { - "old": {"direction": "forward;backward"}, - "replace": {"direction": "both"} - }, - { - "old": {"direction": "North"}, - "replace": {"direction": "N"} - }, - { - "old": {"direction": "South"}, - "replace": {"direction": "S"} - }, - { - "old": {"direction": "up", "highway": "*"}, - "replace": {"incline": "up", "highway": "$1"} - }, - { - "old": {"direction": "uphill"}, - "replace": {"incline": "up"} - }, - { - "old": {"direction": "West"}, - "replace": {"direction": "W"} - }, - { - "old": {"drinkable": "*"}, - "replace": {"drinking_water": "$1"} - }, - { - "old": {"dropped_kerb": "*"}, - "replace": {"kerb": "lowered"} - }, - { - "old": {"embankment": "1"}, - "replace": {"embankment": "yes"} - }, - { - "old": {"embankment": "false"}, - "replace": {"embankment": "no"} - }, - { - "old": {"embankment": "right", "man_made": "embankment"}, - "replace": {"man_made": "embankment"} - }, - { - "old": {"embankment": "true"}, - "replace": {"embankment": "yes"} - }, - { - "old": {"entrance": "emergency_exit"}, - "replace": {"entrance": "emergency"} - }, - { - "old": {"entrance": "fire_exit"}, - "replace": {"entrance": "emergency"} - }, - { - "old": {"entrance": "loading_dock"}, - "replace": {"amenity": "loading_dock"} - }, - { - "old": {"entrance": "main_entrance"}, - "replace": {"entrance": "main"} - }, - { - "old": {"entrance": "private"}, - "replace": {"entrance": "yes", "access": "private"} - }, - { - "old": {"escalator": "*"}, - "replace": {"highway": "steps", "conveying": "$1"} - }, - { - "old": {"fee": "0"}, - "replace": {"fee": "no"} - }, - { - "old": {"fee": "free"}, - "replace": {"fee": "no"} - }, - { - "old": {"fee": "Free"}, - "replace": {"fee": "no"} - }, - { - "old": {"fee": "No"}, - "replace": {"fee": "no"} - }, - { - "old": {"fee": "none"}, - "replace": {"fee": "no"} - }, - { - "old": {"fee": "some"}, - "replace": {"fee": "yes"} - }, - { - "old": {"fee": "Yes"}, - "replace": {"fee": "yes"} - }, - { - "old": {"fenced": "yes"}, - "replace": {"barrier": "fence"} - }, - { - "old": {"FIXME": "*"}, - "replace": {"fixme": "$1"} - }, - { - "old": {"footway": "both"}, - "replace": {"sidewalk": "both"} - }, - { - "old": {"footway": "crossing", "highway": "cycleway"}, - "replace": {"cycleway": "crossing", "highway": "cycleway"} - }, - { - "old": {"footway": "left"}, - "replace": {"sidewalk": "left"} - }, - { - "old": {"footway": "no"}, - "replace": {"sidewalk": "no"} - }, - { - "old": {"footway": "none"}, - "replace": {"sidewalk": "no"} - }, - { - "old": {"footway": "right"}, - "replace": {"sidewalk": "right"} - }, - { - "old": {"footway": "separate"}, - "replace": {"sidewalk": "separate"} - }, - { - "old": {"amenity": "gambling", "gambling": "casino"}, - "replace": {"amenity": "casino"} - }, - { - "old": {"leisure": "amusement_arcade", "gambling": "*"}, - "replace": {"leisure": "adult_gaming_centre", "gambling": "$1"} - }, - { - "old": {"gambling": "slot_machine"}, - "replace": {"gambling": "slot_machines"} - }, - { - "old": {"generator:source": "photovoltaic"}, - "replace": {"generator:source": "solar", "generator:method": "photovoltaic"} - }, - { - "old": {"golf": "faiway"}, - "replace": {"golf": "fairway", "landuse": "grass"} - }, - { - "old": {"golf": "putting_green"}, - "replace": {"golf": "green", "landuse": "grass"} - }, - { - "old": {"golf": "sand_trap"}, - "replace": {"golf": "bunker", "natural": "sand"} - }, - { - "old": {"golf": "tee_area"}, - "replace": {"golf": "tee", "landuse": "grass"} - }, - { - "old": {"golf": "tee_box"}, - "replace": {"golf": "tee", "landuse": "grass"} - }, - { - "old": {"golf": "teebox"}, - "replace": {"golf": "tee", "landuse": "grass"} - }, - { - "old": {"highway": "abandoned"}, - "replace": {"abandoned:highway": "*"} - }, - { - "old": {"highway": "bridleway", "horse": "no"}, - "replace": {"highway": "path", "horse": "no"} - }, - { - "old": {"highway": "cycleway", "bicycle": "no"}, - "replace": {"highway": "path", "bicycle": "no"} - }, - { - "old": {"highway": "cycleway", "cycleway": "track"}, - "replace": {"highway": "cycleway"} - }, - { - "old": {"highway": "footway", "foot": "no"}, - "replace": {"highway": "path", "foot": "no"} - }, - { - "old": {"highway": "ford"}, - "replace": {"ford": "*"} - }, - { - "old": {"highway": "no"} - }, - { - "old": {"highway": "platform"}, - "replace": {"highway": "platform", "public_transport": "platform"} - }, - { - "old": {"highway": "stile"}, - "replace": {"barrier": "stile"} - }, - { - "old": {"highway": "unsurfaced"}, - "replace": {"highway": "road", "surface": "unpaved"} - }, - { - "old": {"internet_access": "public"}, - "replace": {"internet_access": "yes", "internet_access:fee": "no"} - }, - { - "old": {"internet_access": "wifi"}, - "replace": {"internet_access": "wlan"} - }, - { - "old": {"internet_access:fee": "0"}, - "replace": {"internet_access:fee": "no"} - }, - { - "old": {"internet_access:fee": "free"}, - "replace": {"internet_access:fee": "no"} - }, - { - "old": {"internet_access:fee": "Free"}, - "replace": {"internet_access:fee": "no"} - }, - { - "old": {"internet_access:fee": "No"}, - "replace": {"internet_access:fee": "no"} - }, - { - "old": {"internet_access:name": "*"}, - "replace": {"internet_access:ssid": "$1"} - }, - { - "old": {"internet_access:type": "*"}, - "replace": {"internet_access": "$1"} - }, - { - "old": {"kerb": "dropped"}, - "replace": {"kerb": "lowered"} - }, - { - "old": {"kerb": "flat"}, - "replace": {"kerb": "flush"} - }, - { - "old": {"landuse": "basin"}, - "replace": {"natural": "water", "water": "basin"} - }, - { - "old": {"landuse": "conservation"}, - "replace": {"boundary": "protected_area"} - }, - { - "old": {"landuse": "farm"}, - "replace": {"landuse": "farmland"} - }, - { - "old": {"landuse": "field"}, - "replace": {"landuse": "farmland"} - }, - { - "old": {"landuse": "garden"}, - "replace": {"leisure": "garden"} - }, - { - "old": {"landuse": "pond"}, - "replace": {"natural": "water", "water": "pond"} - }, - { - "old": {"landuse": "port"}, - "replace": {"landuse": "industrial", "industrial": "port"} - }, - { - "old": {"landuse": "reservoir"}, - "replace": {"natural": "water", "water": "reservoir"} - }, - { - "old": {"landuse": "wood"}, - "replace": {"natural": "wood"} - }, - { - "old": {"lawyer": "notary"}, - "replace": {"office": "notary"} - }, - { - "old": {"leisure": "beach"}, - "replace": {"natural": "beach"} - }, - { - "old": {"leisure": "bingo"}, - "replace": {"amenity": "gambling", "gambling": "bingo"} - }, - { - "old": {"leisure": "club"}, - "replace": {"club": "*"} - }, - { - "old": {"leisure": "gambling"}, - "replace": {"amenity": "gambling"} - }, - { - "old": {"leisure": "golf_pin"}, - "replace": {"golf": "pin"} - }, - { - "old": {"leisure": "ice_rink", "sport": "hockey"}, - "replace": {"leisure": "ice_rink", "sport": "ice_hockey"} - }, - { - "old": {"leisure": "ice_rink", "sport": "skating"}, - "replace": {"leisure": "ice_rink", "sport": "ice_skating"} - }, - { - "old": {"leisure": "recreation_ground"}, - "replace": {"landuse": "recreation_ground"} - }, - { - "old": {"leisure": "video_arcade"}, - "replace": {"leisure": "amusement_arcade"} - }, - { - "old": {"Level": "*"}, - "replace": {"level": "$1"} - }, - { - "old": {"LEVEL": "*"}, - "replace": {"level": "$1"} - }, - { - "old": {"levels": "*"}, - "replace": {"building:levels": "$1"} - }, - { - "old": {"LEVELS": "*"}, - "replace": {"building:levels": "$1"} - }, - { - "old": {"levels_count": "*"}, - "replace": {"building:levels": "$1"} - }, - { - "old": {"man_made": "cut_line"}, - "replace": {"man_made": "cutline"} - }, - { - "old": {"man_made": "gas_well"}, - "replace": {"man_made": "petroleum_well", "substance": "gas"} - }, - { - "old": {"man_made": "jetty"}, - "replace": {"man_made": "pier"} - }, - { - "old": {"man_made": "mdf"}, - "replace": {"telecom": "exchange"} - }, - { - "old": {"man_made": "MDF"}, - "replace": {"telecom": "exchange"} - }, - { - "old": {"man_made": "fuel_storage_tank"}, - "replace": {"man_made": "storage_tank", "content": "fuel"} - }, - { - "old": {"man_made": "oil_tank"}, - "replace": {"man_made": "storage_tank", "content": "oil"} - }, - { - "old": {"man_made": "oil_well"}, - "replace": {"man_made": "petroleum_well", "substance": "oil"} - }, - { - "old": {"man_made": "village_pump"}, - "replace": {"man_made": "water_well"} - }, - { - "old": {"man_made": "wastewater_tank"}, - "replace": {"man_made": "storage_tank", "content": "wastewater"} - }, - { - "old": {"man_made": "water_tank"}, - "replace": {"man_made": "storage_tank", "content": "water"} - }, - { - "old": {"man_made": "weigh_bridge"}, - "replace": {"amenity": "weighbridge"} - }, - { - "old": {"man_made": "weighbridge"}, - "replace": {"amenity": "weighbridge"} - }, - { - "old": {"man_made": "weighing_machine"}, - "replace": {"amenity": "weighbridge"} - }, - { - "old": {"man_made": "weighing_scale"}, - "replace": {"amenity": "weighbridge"} - }, - { - "old": {"man_made": "weighting machine"}, - "replace": {"amenity": "weighbridge"} - }, - { - "old": {"man_made": "weighting_machine"}, - "replace": {"amenity": "weighbridge"} - }, - { - "old": {"man_made": "well"}, - "replace": {"man_made": "water_well"} - }, - { - "old": {"man_made": "winery"}, - "replace": {"craft": "winery"} - }, - { - "old": {"maxage": "*"}, - "replace": {"max_age": "$1"} - }, - { - "old": {"memorial": "plate"}, - "replace": {"memorial": "plaque"} - }, - { - "old": {"men": "*"}, - "replace": {"male": "$1"} - }, - { - "old": {"minage": "*"}, - "replace": {"min_age": "$1"} - }, - { - "old": {"mining_resource": "*"}, - "replace": {"resource": "$1"} - }, - { - "old": {"museum_type": "history"}, - "replace": {"museum": "history"} - }, - { - "old": {"museum_type": "private"}, - "replace": {"operator:type": "private"} - }, - { - "old": {"museum_type": "public"}, - "replace": {"operator:type": "public"} - }, - { - "old": {"natural": "marsh"}, - "replace": {"natural": "wetland", "wetland": "marsh"} - }, - { - "old": {"natural": "waterfall"}, - "replace": {"waterway": "waterfall"} - }, - { - "old": {"NOTE": "*"}, - "replace": {"note": "$1"} - }, - { - "old": {"nosquare": "*"}, - "replace": {"nonsquare": "$1"} - }, - { - "old": {"office": "administrative"}, - "replace": {"office": "government"} - }, - { - "old": {"office": "consultancy"}, - "replace": {"office": "consulting"} - }, - { - "old": {"office": "consultant"}, - "replace": {"office": "consulting"} - }, - { - "old": {"office": "real_estate"}, - "replace": {"office": "estate_agent"} - }, - { - "old": {"oneway": "1"}, - "replace": {"oneway": "yes"} - }, - { - "old": {"oneway": "alternate"}, - "replace": {"oneway": "alternating"} - }, - { - "old": {"oneway": "no;yes"} - }, - { - "old": {"oneway": "unknown"} - }, - { - "old": {"operator:type": "goverment"}, - "replace": {"operator:type": "government"} - }, - { - "old": {"operator:type": "Privado"}, - "replace": {"operator:type": "private"} - }, - { - "old": {"operator:type": "Private"}, - "replace": {"operator:type": "private"} - }, - { - "old": {"operator:type": "Public"}, - "replace": {"operator:type": "public"} - }, - { - "old": {"operator:type": "Publico"}, - "replace": {"operator:type": "public"} - }, - { - "old": {"operator:type": "unknown"} - }, - { - "old": {"place_name": "*"}, - "replace": {"name": "$1"} - }, - { - "old": {"pole": "transition"}, - "replace": {"location:transition": "yes"} - }, - { - "old": {"postcode": "*"}, - "replace": {"addr:postcode": "$1"} - }, - { - "old": {"power": "busbar"}, - "replace": {"power": "line", "line": "busbar"} - }, - { - "old": {"power": "line", "location": "underground"}, - "replace": {"power": "cable", "location": "underground"} - }, - { - "old": {"power": "marker"}, - "replace": {"marker": "*", "utility": "power"} - }, - { - "old": {"power": "sub_station"}, - "replace": {"power": "substation"} - }, - { - "old": {"power": "substation", "location": "kiosk"}, - "replace": {"power": "substation", "man_made": "street_cabinet", "street_cabinet": "power"} - }, - { - "old": {"power": "underground_cable"}, - "replace": {"power": "cable", "location": "underground"} - }, - { - "old": {"power_source": "*"}, - "replace": {"generator:source": "$1"} - }, - { - "old": {"power_rating": "*"}, - "replace": {"generator:output": "$1"} - }, - { - "old": {"public_transport": "station", "aerialway": "yes"}, - "replace": {"public_transport": "station", "aerialway": "station"} - }, - { - "old": {"pump": "hand_pump"}, - "replace": {"pump": "manual"} - }, - { - "old": {"pump": "electrical_pump"}, - "replace": {"pump": "powered"} - }, - { - "old": {"pump": "no_pump"}, - "replace": {"pump": "no"} - }, - { - "old": {"pump": "power"}, - "replace": {"pump": "powered"} - }, - { - "old": {"railway": "*", "abandoned": "yes"}, - "replace": {"abandoned:railway": "$1"} - }, - { - "old": {"railway": "*", "disused": "yes"}, - "replace": {"disused:railway": "$1"} - }, - { - "old": {"railway": "platform"}, - "replace": {"railway": "platform", "public_transport": "platform"} - }, - { - "old": {"railway": "station"}, - "replace": {"railway": "station", "public_transport": "station"} - }, - { - "old": {"railway": "tram_stop"}, - "replace": {"railway": "tram_stop", "public_transport": "stop_position", "tram": "yes"} - }, - { - "old": {"recommended_speed": "*"}, - "replace": {"maxspeed:advisory": "$1"} - }, - { - "old": {"recommended_speed:backward": "*"}, - "replace": {"maxspeed:advisory:backward": "$1"} - }, - { - "old": {"recommended_speed:forward": "*"}, - "replace": {"maxspeed:advisory:forward": "$1"} - }, - { - "old": {"religion": "catholic"}, - "replace": {"religion": "christian", "denomination": "catholic"} - }, - { - "old": {"reservations": "*"}, - "replace": {"reservation": "$1"} - }, - { - "old": {"roof:color": "*"}, - "replace": {"roof:colour": "$1"} - }, - { - "old": {"roof:shape": "half_hipped"}, - "replace": {"roof:shape": "half-hipped"} - }, - { - "old": {"route": "ncn"}, - "replace": {"route": "bicycle", "network": "ncn"} - }, - { - "old": {"rwn_expected_route_relations": "*"}, - "replace": {"expected_rwn_route_relations": "$1"} - }, - { - "old": {"shop": "adult"}, - "replace": {"shop": "erotic"} - }, - { - "old": {"shop": "antique"}, - "replace": {"shop": "antiques"} - }, - { - "old": {"shop": "army_surplus"}, - "replace": {"shop": "military_surplus"} - }, - { - "old": {"shop": "auto_parts"}, - "replace": {"shop": "car_parts"} - }, - { - "old": {"shop": "baby"}, - "replace": {"shop": "baby_goods"} - }, - { - "old": {"shop": "baby_care"}, - "replace": {"shop": "baby_goods"} - }, - { - "old": {"shop": "bags"}, - "replace": {"shop": "bag"} - }, - { - "old": {"shop": "bail_bond"}, - "replace": {"office": "bail_bond_agent"} - }, - { - "old": {"shop": "bail_bonds"}, - "replace": {"office": "bail_bond_agent"} - }, - { - "old": {"shop": "betting"}, - "replace": {"shop": "bookmaker"} - }, - { - "old": {"shop": "boutique"}, - "replace": {"shop": "clothes"} - }, - { - "old": {"shop": "cafe"}, - "replace": {"amenity": "cafe"} - }, - { - "old": {"shop": "consulting"}, - "replace": {"office": "consulting"} - }, - { - "old": {"shop": "dive"}, - "replace": {"shop": "scuba_diving"} - }, - { - "old": {"shop": "fashion"}, - "replace": {"shop": "clothes"} - }, - { - "old": {"shop": "fish"}, - "replace": {"shop": "seafood"} - }, - { - "old": {"shop": "fishmonger"}, - "replace": {"shop": "seafood"} - }, - { - "old": {"shop": "furnace"}, - "replace": {"shop": "fireplace"} - }, - { - "old": {"shop": "gallery"}, - "replace": {"shop": "art"} - }, - { - "old": {"shop": "jewellery"}, - "replace": {"shop": "jewelry"} - }, - { - "old": {"shop": "lingerie"}, - "replace": {"shop": "clothes", "clothes": "underwear"} - }, - { - "old": {"shop": "luggage"}, - "replace": {"shop": "bag"} - }, - { - "old": {"shop": "money_transfer"}, - "replace": {"amenity": "money_transfer"} - }, - { - "old": {"shop": "moneylender"}, - "replace": {"shop": "money_lender"} - }, - { - "old": {"shop": "organic"}, - "replace": {"shop": "supermarket", "organic": "only"} - }, - { - "old": {"shop": "perfume"}, - "replace": {"shop": "perfumery"} - }, - { - "old": {"shop": "real_estate"}, - "replace": {"office": "estate_agent"} - }, - { - "old": {"shop": "tickets"}, - "replace": {"shop": "ticket"} - }, - { - "old": {"shop": "underwear"}, - "replace": {"shop": "clothes", "clothes": "underwear"} - }, - { - "old": {"shop": "winery"}, - "replace": {"craft": "winery"} - }, - { - "old": {"showers": "*"}, - "replace": {"shower": "$1"} - }, - { - "old": {"sloped_curb": "0"}, - "replace": {"kerb": "flush"} - }, - { - "old": {"sloped_curb": "0.00"}, - "replace": {"kerb": "flush"} - }, - { - "old": {"sloped_curb": "0.01"}, - "replace": {"kerb": "lowered", "kerb:height": "1 cm"} - }, - { - "old": {"sloped_curb": "0.02"}, - "replace": {"kerb": "lowered", "kerb:height": "2 cm"} - }, - { - "old": {"sloped_curb": "0.03"}, - "replace": {"kerb": "lowered", "kerb:height": "3 cm"} - }, - { - "old": {"sloped_curb": "at_grade"}, - "replace": {"kerb": "flush"} - }, - { - "old": {"sloped_curb": "both"}, - "replace": {"kerb": "lowered"} - }, - { - "old": {"sloped_curb": "flush"}, - "replace": {"kerb": "flush"} - }, - { - "old": {"sloped_curb": "low"}, - "replace": {"kerb": "lowered"} - }, - { - "old": {"sloped_curb": "no"}, - "replace": {"kerb": "raised"} - }, - { - "old": {"sloped_curb": "yes"}, - "replace": {"kerb": "lowered"} - }, - { - "old": {"speed_limit": "*"}, - "replace": {"maxspeed": "$1"} - }, - { - "old": {"speedlimit": "*"}, - "replace": {"maxspeed": "$1"} - }, - { - "old": {"SpeedLimit": "*"}, - "replace": {"maxspeed": "$1"} - }, - { - "old": {"SPEEDLIMIT": "*"}, - "replace": {"maxspeed": "$1"} - }, - { - "old": {"sport": "horse_shoes"}, - "replace": {"sport": "horseshoes"} - }, - { - "old": {"sport": "horseshoe"}, - "replace": {"sport": "horseshoes"} - }, - { - "old": {"sport": "shuffle_board"}, - "replace": {"sport": "shuffleboard"} - }, - { - "old": {"station": "light_rail"}, - "replace": {"station": "light_rail", "light_rail": "yes"} - }, - { - "old": {"station": "monorail"}, - "replace": {"station": "monorail", "monorail": "yes"} - }, - { - "old": {"station": "subway"}, - "replace": {"station": "subway", "subway": "yes"} - }, - { - "old": {"station": "train"}, - "replace": {"station": "train", "train": "yes"} - }, - { - "old": {"sustenance": "bar"}, - "replace": {"amenity": "bar"} - }, - { - "old": {"sustenance": "cafe"}, - "replace": {"amenity": "cafe"} - }, - { - "old": {"sustenance": "pub"}, - "replace": {"amenity": "pub"} - }, - { - "old": {"sustenance": "restaurant"}, - "replace": {"amenity": "restaurant"} - }, - { - "old": {"theatre:type": "amphitheatre"}, - "replace": {"theatre:type": "amphi"} - }, - { - "old": {"todo": "*"}, - "replace": {"fixme": "$1"} - }, - { - "old": {"TODO": "*"}, - "replace": {"fixme": "$1"} - }, - { - "old": {"toilets:disposal": "longdrop"}, - "replace": {"toilets:disposal": "pitlatrine"} - }, - { - "old": {"toilets:disposal": "pit_latrine"}, - "replace": {"toilets:disposal": "pitlatrine"} - }, - { - "old": {"tourism": "bed_and_breakfast"}, - "replace": {"tourism": "guest_house", "guest_house": "bed_and_breakfast"} - }, - { - "old": {"tower:type": "power"}, - "replace": {"power": "tower"} - }, - { - "old": {"tower:type": "anchor"}, - "replace": {"line_attachment": "anchor"} - }, - { - "old": {"tower:type": "suspension"}, - "replace": {"line_attachment": "suspension"} - }, - { - "old": {"townhall:village": "yes"}, - "replace": {"amenity": "townhall", "townhall:type": "village"} - }, - { - "old": {"type": "audio", "amenity": "studio"}, - "replace": {"studio": "audio"} - }, - { - "old": {"type": "broad_leaved"}, - "replace": {"leaf_type": "broadleaved"} - }, - { - "old": {"type": "caldera"}, - "replace": {"volcano:type": "caldera"} - }, - { - "old": {"type": "conifer"}, - "replace": {"leaf_type": "needleleaved"} - }, - { - "old": {"type": "deciduous"}, - "replace": {"leaf_cycle": "deciduous"} - }, - { - "old": {"type": "extinct"}, - "replace": {"volcano:status": "extinct"} - }, - { - "old": {"type": "scoria"}, - "replace": {"volcano:type": "scoria"} - }, - { - "old": {"type": "shield"}, - "replace": {"volcano:type": "shield"} - }, - { - "old": {"type": "strato"}, - "replace": {"volcano:type": "stratovolcano"} - }, - { - "old": {"type": "video", "amenity": "studio"}, - "replace": {"studio": "video"} - }, - { - "old": {"unnamed": "*"}, - "replace": {"noname": "$1"} - }, - { - "old": {"volcano": "extinct"}, - "replace": {"volcano:status": "extinct"} - }, - { - "old": {"wall_type": "noise_barrier"}, - "replace": {"wall": "noise_barrier"} - }, - { - "old": {"water": "intermittent"}, - "replace": {"natural": "water", "intermittent": "yes"} - }, - { - "old": {"water": "riverbank"}, - "replace": {"natural": "water", "water": "river"} - }, - { - "old": {"water": "salt"}, - "replace": {"natural": "water", "salt": "yes"} - }, - { - "old": {"water": "tidal"}, - "replace": {"natural": "water", "tidal": "yes"} - }, - { - "old": {"waterway": "aqueduct"}, - "replace": {"waterway": "canal", "bridge": "aqueduct"} - }, - { - "old": {"waterway": "lock"}, - "replace": {"waterway": "canal", "lock": "yes"} - }, - { - "old": {"waterway": "riverbank"}, - "replace": {"natural": "water", "water": "river"} - }, - { - "old": {"wifi": "yes"}, - "replace": {"internet_access": "wlan"} - }, - { - "old": {"wifi": "free"}, - "replace": {"internet_access": "wlan", "internet_access:fee": "no"} - }, - { - "old": {"women": "*"}, - "replace": {"female": "$1"} - }, - { - "old": {"wood": "coniferous"}, - "replace": {"leaf_type": "needleleaved"} - }, - { - "old": {"wood": "deciduous"}, - "replace": {"leaf_cycle": "deciduous"} - }, - { - "old": {"wood": "evergreen"}, - "replace": {"leaf_cycle": "evergreen"} - }, - { - "old": {"wood": "mixed"}, - "replace": {"leaf_cycle": "mixed", "leaf_type": "mixed"} - } - ] -} +[ + { + "old": {"aerialway": "canopy"}, + "replace": {"aerialway": "zip_line"} + }, + { + "old": {"aeroway": "aerobridge"}, + "replace": {"aeroway": "jet_bridge", "highway": "corridor"} + }, + { + "old": {"access": "public"}, + "replace": {"access": "yes"} + }, + { + "old": {"agrarian": "agrcultural_machinry"}, + "replace": {"agrarian": "agricultural_machinery"} + }, + { + "old": {"amenity": "advertising"}, + "replace": {"advertising": "*"} + }, + { + "old": {"amenity": "artwork"}, + "replace": {"tourism": "artwork"} + }, + { + "old": {"amenity": "bail_bonds"}, + "replace": {"office": "bail_bond_agent"} + }, + { + "old": {"amenity": "car_repair"}, + "replace": {"shop": "car_repair"} + }, + { + "old": {"amenity": "changing_room"}, + "replace": {"amenity": "dressing_room"} + }, + { + "old": {"amenity": "citymap_post"}, + "replace": {"tourism": "information"} + }, + { + "old": {"amenity": "club"}, + "replace": {"club": "*"} + }, + { + "old": {"amenity": "community_center"}, + "replace": {"amenity": "community_centre"} + }, + { + "old": {"amenity": "dancing_school"}, + "replace": {"leisure": "dance", "dance:teaching": "yes" } + }, + { + "old": {"amenity": "dog_bin"}, + "replace": {"amenity": "waste_basket", "waste": "dog_excrement"} + }, + { + "old": {"amenity": "dog_waste_bin"}, + "replace": {"amenity": "waste_basket", "waste": "dog_excrement"} + }, + { + "old": {"amenity": "embassy"}, + "replace": {"office": "diplomatic"} + }, + { + "old": {"amenity": "ev_charging"}, + "replace": {"amenity": "charging_station"} + }, + { + "old": {"amenity": "fire_hydrant"}, + "replace": {"emergency": "fire_hydrant"} + }, + { + "old": {"amenity": "firepit"}, + "replace": {"leisure": "firepit"} + }, + { + "old": {"amenity": "garage"}, + "replace": {"landuse": "garages"} + }, + { + "old": {"amenity": "garages"}, + "replace": {"landuse": "garages"} + }, + { + "old": {"amenity": "gym"}, + "replace": {"leisure": "fitness_centre"} + }, + { + "old": {"amenity": "hotel"}, + "replace": {"tourism": "hotel"} + }, + { + "old": {"amenity": "kiosk"}, + "replace": {"shop": "kiosk"} + }, + { + "old": {"amenity": "nursery"}, + "replace": {"amenity": "kindergarten"} + }, + { + "old": {"amenity": "preschool"}, + "replace": {"amenity": "kindergarten", "preschool": "yes"} + }, + { + "old": {"amenity": "public_building"}, + "replace": {"building": "public"} + }, + { + "old": {"amenity": "real_estate"}, + "replace": {"office": "estate_agent"} + }, + { + "old": {"amenity": "register_office"}, + "replace": {"office": "government", "government": "register_office"} + }, + { + "old": {"amenity": "research_institution"}, + "replace": {"amenity": "research_institute"} + }, + { + "old": {"amenity": "sauna"}, + "replace": {"leisure": "sauna"} + }, + { + "old": {"amenity": "scrapyard"}, + "replace": {"landuse": "industrial", "industrial": "scrap_yard"} + }, + { + "old": {"amenity": "shop"}, + "replace": {"shop": "*"} + }, + { + "old": {"amenity": "sloped_curb"}, + "replace": {"kerb": "lowered"} + }, + { + "old": {"amenity": "swimming_pool"}, + "replace": {"leisure": "swimming_pool"} + }, + { + "old": {"amenity": "ticket_booth"}, + "replace": {"shop": "ticket"} + }, + { + "old": {"amenity": "toilet"}, + "replace": {"amenity": "toilets"} + }, + { + "old": {"amenity": "vending_machine", "vending": "news_papers"}, + "replace": {"amenity": "vending_machine", "vending": "newspapers"} + }, + { + "old": {"amenity": "weigh_bridge"}, + "replace": {"amenity": "weighbridge"} + }, + { + "old": {"amenity": "winery"}, + "replace": {"craft": "winery"} + }, + { + "old": {"amenity": "youth_center"}, + "replace": {"amenity": "community_centre", "community_centre:for": "juvenile"} + }, + { + "old": {"amenity": "youth_centre"}, + "replace": {"amenity": "community_centre", "community_centre:for": "juvenile"} + }, + { + "old": {"artwork": "*"}, + "replace": {"artwork_type": "$1"} + }, + { + "old": {"artwork:type": "*"}, + "replace": {"artwork_type": "$1"} + }, + { + "old": {"attraction": "ferris_wheel"}, + "replace": {"attraction": "big_wheel"} + }, + { + "old": {"barrier": "curb"}, + "replace": {"barrier": "kerb"} + }, + { + "old": {"barrier": "embankment"}, + "replace": {"man_made": "embankment"} + }, + { + "old": {"barrier": "railing"}, + "replace": {"barrier": "fence", "fence_type": "railing"} + }, + { + "old": {"barrier": "wall", "type": "noise_barrier"}, + "replace": {"barrier": "wall", "wall": "noise_barrier"} + }, + { + "old": {"barrier": "wire_fence"}, + "replace": {"barrier": "fence", "fence_type": "wire"} + }, + { + "old": {"barrier": "wood_fence"}, + "replace": {"barrier": "fence", "fence_type": "wood"} + }, + { + "old": {"bicycle:oneway": "*"}, + "replace": {"oneway:bicycle": "$1"} + }, + { + "old": {"building": "entrance"}, + "replace": {"entrance": "*"} + }, + { + "old": {"building": "family_house"}, + "replace": {"building": "house"} + }, + { + "old": {"building": "home"}, + "replace": {"building": "house"} + }, + { + "old": {"building": "household"}, + "replace": {"building": "house"} + }, + { + "old": {"building:color": "*"}, + "replace": {"building:colour": "$1"} + }, + { + "old": {"building:height": "*"}, + "replace": {"height": "$1"} + }, + { + "old": {"building:min_height": "*"}, + "replace": {"min_height": "$1"} + }, + { + "old": {"building:roof:colour": "*"}, + "replace": {"roof:colour": "$1"} + }, + { + "old": {"building:type": "*"}, + "replace": {"building": "$1"} + }, + { + "old": {"camp_site": "camp_pitch"}, + "replace": {"tourism": "camp_pitch"} + }, + { + "old": {"shop": "clothes", "clothes": "second_hand"}, + "replace": {"shop": "clothes", "second_hand": "yes"} + }, + { + "old": {"color": "*"}, + "replace": {"colour": "$1"} + }, + { + "old": {"company": "consulting"}, + "replace": {"office": "consulting"} + }, + { + "old": {"craft": "catering"}, + "replace": {"craft": "caterer"} + }, + { + "old": {"craft": "glass"}, + "replace": {"craft": "glaziery"} + }, + { + "old": {"craft": "jeweler"}, + "replace": {"shop": "jewelry"} + }, + { + "old": {"craft": "optician"}, + "replace": {"shop": "optician"} + }, + { + "old": {"craft": "sculpter"}, + "replace": {"craft": "sculptor"} + }, + { + "old": {"crossing": "island"}, + "replace": {"crossing:island": "yes"} + }, + { + "old": {"cuisine": "gluten-free"}, + "replace": {"diet:gluten_free": "*"} + }, + { + "old": {"cuisine": "halal"}, + "replace": {"diet:halal": "*"} + }, + { + "old": {"cuisine": "kosher"}, + "replace": {"diet:kosher": "*"} + }, + { + "old": {"cuisine": "vegan"}, + "replace": {"diet:vegan": "*"} + }, + { + "old": {"cuisine": "vegetarian"}, + "replace": {"diet:vegetarian": "*"} + }, + { + "old": {"curb": "*"}, + "replace": {"kerb": "$1"} + }, + { + "old": {"diaper": "1"}, + "replace": {"changing_table": "yes", "changing_table:count": "1"} + }, + { + "old": {"diaper": "no"}, + "replace": {"changing_table": "no"} + }, + { + "old": {"diaper": "room"}, + "replace": {"changing_table": "yes", "changing_table:location": "room"} + }, + { + "old": {"diaper": "yes"}, + "replace": {"changing_table": "yes"} + }, + { + "old": {"direction": "all"}, + "replace": {"direction": "both"} + }, + { + "old": {"direction": "down", "highway": "*"}, + "replace": {"incline": "down", "highway": "$1"} + }, + { + "old": {"direction": "downhill"}, + "replace": {"incline": "down"} + }, + { + "old": {"direction": "East"}, + "replace": {"direction": "E"} + }, + { + "old": {"direction": "forward;backward"}, + "replace": {"direction": "both"} + }, + { + "old": {"direction": "North"}, + "replace": {"direction": "N"} + }, + { + "old": {"direction": "South"}, + "replace": {"direction": "S"} + }, + { + "old": {"direction": "up", "highway": "*"}, + "replace": {"incline": "up", "highway": "$1"} + }, + { + "old": {"direction": "uphill"}, + "replace": {"incline": "up"} + }, + { + "old": {"direction": "West"}, + "replace": {"direction": "W"} + }, + { + "old": {"drinkable": "*"}, + "replace": {"drinking_water": "$1"} + }, + { + "old": {"dropped_kerb": "*"}, + "replace": {"kerb": "lowered"} + }, + { + "old": {"embankment": "1"}, + "replace": {"embankment": "yes"} + }, + { + "old": {"embankment": "false"}, + "replace": {"embankment": "no"} + }, + { + "old": {"embankment": "right", "man_made": "embankment"}, + "replace": {"man_made": "embankment"} + }, + { + "old": {"embankment": "true"}, + "replace": {"embankment": "yes"} + }, + { + "old": {"entrance": "emergency_exit"}, + "replace": {"entrance": "emergency"} + }, + { + "old": {"entrance": "fire_exit"}, + "replace": {"entrance": "emergency"} + }, + { + "old": {"entrance": "loading_dock"}, + "replace": {"amenity": "loading_dock"} + }, + { + "old": {"entrance": "main_entrance"}, + "replace": {"entrance": "main"} + }, + { + "old": {"entrance": "private"}, + "replace": {"entrance": "yes", "access": "private"} + }, + { + "old": {"escalator": "*"}, + "replace": {"highway": "steps", "conveying": "$1"} + }, + { + "old": {"fee": "0"}, + "replace": {"fee": "no"} + }, + { + "old": {"fee": "free"}, + "replace": {"fee": "no"} + }, + { + "old": {"fee": "Free"}, + "replace": {"fee": "no"} + }, + { + "old": {"fee": "No"}, + "replace": {"fee": "no"} + }, + { + "old": {"fee": "none"}, + "replace": {"fee": "no"} + }, + { + "old": {"fee": "some"}, + "replace": {"fee": "yes"} + }, + { + "old": {"fee": "Yes"}, + "replace": {"fee": "yes"} + }, + { + "old": {"fenced": "yes"}, + "replace": {"barrier": "fence"} + }, + { + "old": {"FIXME": "*"}, + "replace": {"fixme": "$1"} + }, + { + "old": {"footway": "both"}, + "replace": {"sidewalk": "both"} + }, + { + "old": {"footway": "crossing", "highway": "cycleway"}, + "replace": {"cycleway": "crossing", "highway": "cycleway"} + }, + { + "old": {"footway": "left"}, + "replace": {"sidewalk": "left"} + }, + { + "old": {"footway": "no"}, + "replace": {"sidewalk": "no"} + }, + { + "old": {"footway": "none"}, + "replace": {"sidewalk": "no"} + }, + { + "old": {"footway": "right"}, + "replace": {"sidewalk": "right"} + }, + { + "old": {"footway": "separate"}, + "replace": {"sidewalk": "separate"} + }, + { + "old": {"amenity": "gambling", "gambling": "casino"}, + "replace": {"amenity": "casino"} + }, + { + "old": {"leisure": "amusement_arcade", "gambling": "*"}, + "replace": {"leisure": "adult_gaming_centre", "gambling": "$1"} + }, + { + "old": {"gambling": "slot_machine"}, + "replace": {"gambling": "slot_machines"} + }, + { + "old": {"generator:source": "photovoltaic"}, + "replace": {"generator:source": "solar", "generator:method": "photovoltaic"} + }, + { + "old": {"golf": "faiway"}, + "replace": {"golf": "fairway", "landuse": "grass"} + }, + { + "old": {"golf": "putting_green"}, + "replace": {"golf": "green", "landuse": "grass"} + }, + { + "old": {"golf": "sand_trap"}, + "replace": {"golf": "bunker", "natural": "sand"} + }, + { + "old": {"golf": "tee_area"}, + "replace": {"golf": "tee", "landuse": "grass"} + }, + { + "old": {"golf": "tee_box"}, + "replace": {"golf": "tee", "landuse": "grass"} + }, + { + "old": {"golf": "teebox"}, + "replace": {"golf": "tee", "landuse": "grass"} + }, + { + "old": {"highway": "abandoned"}, + "replace": {"abandoned:highway": "*"} + }, + { + "old": {"highway": "bridleway", "horse": "no"}, + "replace": {"highway": "path", "horse": "no"} + }, + { + "old": {"highway": "cycleway", "bicycle": "no"}, + "replace": {"highway": "path", "bicycle": "no"} + }, + { + "old": {"highway": "cycleway", "cycleway": "track"}, + "replace": {"highway": "cycleway"} + }, + { + "old": {"highway": "footway", "foot": "no"}, + "replace": {"highway": "path", "foot": "no"} + }, + { + "old": {"highway": "ford"}, + "replace": {"ford": "*"} + }, + { + "old": {"highway": "no"} + }, + { + "old": {"highway": "platform"}, + "replace": {"highway": "platform", "public_transport": "platform"} + }, + { + "old": {"highway": "stile"}, + "replace": {"barrier": "stile"} + }, + { + "old": {"highway": "unsurfaced"}, + "replace": {"highway": "road", "surface": "unpaved"} + }, + { + "old": {"internet_access": "public"}, + "replace": {"internet_access": "yes", "internet_access:fee": "no"} + }, + { + "old": {"internet_access": "wifi"}, + "replace": {"internet_access": "wlan"} + }, + { + "old": {"internet_access:fee": "0"}, + "replace": {"internet_access:fee": "no"} + }, + { + "old": {"internet_access:fee": "free"}, + "replace": {"internet_access:fee": "no"} + }, + { + "old": {"internet_access:fee": "Free"}, + "replace": {"internet_access:fee": "no"} + }, + { + "old": {"internet_access:fee": "No"}, + "replace": {"internet_access:fee": "no"} + }, + { + "old": {"internet_access:name": "*"}, + "replace": {"internet_access:ssid": "$1"} + }, + { + "old": {"internet_access:type": "*"}, + "replace": {"internet_access": "$1"} + }, + { + "old": {"kerb": "dropped"}, + "replace": {"kerb": "lowered"} + }, + { + "old": {"kerb": "flat"}, + "replace": {"kerb": "flush"} + }, + { + "old": {"landuse": "basin"}, + "replace": {"natural": "water", "water": "basin"} + }, + { + "old": {"landuse": "conservation"}, + "replace": {"boundary": "protected_area"} + }, + { + "old": {"landuse": "farm"}, + "replace": {"landuse": "farmland"} + }, + { + "old": {"landuse": "field"}, + "replace": {"landuse": "farmland"} + }, + { + "old": {"landuse": "garden"}, + "replace": {"leisure": "garden"} + }, + { + "old": {"landuse": "pond"}, + "replace": {"natural": "water", "water": "pond"} + }, + { + "old": {"landuse": "port"}, + "replace": {"landuse": "industrial", "industrial": "port"} + }, + { + "old": {"landuse": "reservoir"}, + "replace": {"natural": "water", "water": "reservoir"} + }, + { + "old": {"landuse": "wood"}, + "replace": {"natural": "wood"} + }, + { + "old": {"lawyer": "notary"}, + "replace": {"office": "notary"} + }, + { + "old": {"leisure": "beach"}, + "replace": {"natural": "beach"} + }, + { + "old": {"leisure": "bingo"}, + "replace": {"amenity": "gambling", "gambling": "bingo"} + }, + { + "old": {"leisure": "club"}, + "replace": {"club": "*"} + }, + { + "old": {"leisure": "gambling"}, + "replace": {"amenity": "gambling"} + }, + { + "old": {"leisure": "golf_pin"}, + "replace": {"golf": "pin"} + }, + { + "old": {"leisure": "ice_rink", "sport": "hockey"}, + "replace": {"leisure": "ice_rink", "sport": "ice_hockey"} + }, + { + "old": {"leisure": "ice_rink", "sport": "skating"}, + "replace": {"leisure": "ice_rink", "sport": "ice_skating"} + }, + { + "old": {"leisure": "recreation_ground"}, + "replace": {"landuse": "recreation_ground"} + }, + { + "old": {"leisure": "video_arcade"}, + "replace": {"leisure": "amusement_arcade"} + }, + { + "old": {"Level": "*"}, + "replace": {"level": "$1"} + }, + { + "old": {"LEVEL": "*"}, + "replace": {"level": "$1"} + }, + { + "old": {"levels": "*"}, + "replace": {"building:levels": "$1"} + }, + { + "old": {"LEVELS": "*"}, + "replace": {"building:levels": "$1"} + }, + { + "old": {"levels_count": "*"}, + "replace": {"building:levels": "$1"} + }, + { + "old": {"man_made": "cut_line"}, + "replace": {"man_made": "cutline"} + }, + { + "old": {"man_made": "gas_well"}, + "replace": {"man_made": "petroleum_well", "substance": "gas"} + }, + { + "old": {"man_made": "jetty"}, + "replace": {"man_made": "pier"} + }, + { + "old": {"man_made": "mdf"}, + "replace": {"telecom": "exchange"} + }, + { + "old": {"man_made": "MDF"}, + "replace": {"telecom": "exchange"} + }, + { + "old": {"man_made": "fuel_storage_tank"}, + "replace": {"man_made": "storage_tank", "content": "fuel"} + }, + { + "old": {"man_made": "oil_tank"}, + "replace": {"man_made": "storage_tank", "content": "oil"} + }, + { + "old": {"man_made": "oil_well"}, + "replace": {"man_made": "petroleum_well", "substance": "oil"} + }, + { + "old": {"man_made": "village_pump"}, + "replace": {"man_made": "water_well"} + }, + { + "old": {"man_made": "wastewater_tank"}, + "replace": {"man_made": "storage_tank", "content": "wastewater"} + }, + { + "old": {"man_made": "water_tank"}, + "replace": {"man_made": "storage_tank", "content": "water"} + }, + { + "old": {"man_made": "weigh_bridge"}, + "replace": {"amenity": "weighbridge"} + }, + { + "old": {"man_made": "weighbridge"}, + "replace": {"amenity": "weighbridge"} + }, + { + "old": {"man_made": "weighing_machine"}, + "replace": {"amenity": "weighbridge"} + }, + { + "old": {"man_made": "weighing_scale"}, + "replace": {"amenity": "weighbridge"} + }, + { + "old": {"man_made": "weighting machine"}, + "replace": {"amenity": "weighbridge"} + }, + { + "old": {"man_made": "weighting_machine"}, + "replace": {"amenity": "weighbridge"} + }, + { + "old": {"man_made": "well"}, + "replace": {"man_made": "water_well"} + }, + { + "old": {"man_made": "winery"}, + "replace": {"craft": "winery"} + }, + { + "old": {"maxage": "*"}, + "replace": {"max_age": "$1"} + }, + { + "old": {"memorial": "plate"}, + "replace": {"memorial": "plaque"} + }, + { + "old": {"men": "*"}, + "replace": {"male": "$1"} + }, + { + "old": {"minage": "*"}, + "replace": {"min_age": "$1"} + }, + { + "old": {"mining_resource": "*"}, + "replace": {"resource": "$1"} + }, + { + "old": {"museum_type": "history"}, + "replace": {"museum": "history"} + }, + { + "old": {"museum_type": "private"}, + "replace": {"operator:type": "private"} + }, + { + "old": {"museum_type": "public"}, + "replace": {"operator:type": "public"} + }, + { + "old": {"natural": "marsh"}, + "replace": {"natural": "wetland", "wetland": "marsh"} + }, + { + "old": {"natural": "waterfall"}, + "replace": {"waterway": "waterfall"} + }, + { + "old": {"NOTE": "*"}, + "replace": {"note": "$1"} + }, + { + "old": {"nosquare": "*"}, + "replace": {"nonsquare": "$1"} + }, + { + "old": {"office": "administrative"}, + "replace": {"office": "government"} + }, + { + "old": {"office": "consultancy"}, + "replace": {"office": "consulting"} + }, + { + "old": {"office": "consultant"}, + "replace": {"office": "consulting"} + }, + { + "old": {"office": "real_estate"}, + "replace": {"office": "estate_agent"} + }, + { + "old": {"oneway": "1"}, + "replace": {"oneway": "yes"} + }, + { + "old": {"oneway": "alternate"}, + "replace": {"oneway": "alternating"} + }, + { + "old": {"oneway": "no;yes"} + }, + { + "old": {"oneway": "unknown"} + }, + { + "old": {"operator:type": "goverment"}, + "replace": {"operator:type": "government"} + }, + { + "old": {"operator:type": "Privado"}, + "replace": {"operator:type": "private"} + }, + { + "old": {"operator:type": "Private"}, + "replace": {"operator:type": "private"} + }, + { + "old": {"operator:type": "Public"}, + "replace": {"operator:type": "public"} + }, + { + "old": {"operator:type": "Publico"}, + "replace": {"operator:type": "public"} + }, + { + "old": {"operator:type": "unknown"} + }, + { + "old": {"place_name": "*"}, + "replace": {"name": "$1"} + }, + { + "old": {"pole": "transition"}, + "replace": {"location:transition": "yes"} + }, + { + "old": {"postcode": "*"}, + "replace": {"addr:postcode": "$1"} + }, + { + "old": {"power": "busbar"}, + "replace": {"power": "line", "line": "busbar"} + }, + { + "old": {"power": "line", "location": "underground"}, + "replace": {"power": "cable", "location": "underground"} + }, + { + "old": {"power": "marker"}, + "replace": {"marker": "*", "utility": "power"} + }, + { + "old": {"power": "sub_station"}, + "replace": {"power": "substation"} + }, + { + "old": {"power": "substation", "location": "kiosk"}, + "replace": {"power": "substation", "man_made": "street_cabinet", "street_cabinet": "power"} + }, + { + "old": {"power": "underground_cable"}, + "replace": {"power": "cable", "location": "underground"} + }, + { + "old": {"power_source": "*"}, + "replace": {"generator:source": "$1"} + }, + { + "old": {"power_rating": "*"}, + "replace": {"generator:output": "$1"} + }, + { + "old": {"public_transport": "station", "aerialway": "yes"}, + "replace": {"public_transport": "station", "aerialway": "station"} + }, + { + "old": {"pump": "hand_pump"}, + "replace": {"pump": "manual"} + }, + { + "old": {"pump": "electrical_pump"}, + "replace": {"pump": "powered"} + }, + { + "old": {"pump": "no_pump"}, + "replace": {"pump": "no"} + }, + { + "old": {"pump": "power"}, + "replace": {"pump": "powered"} + }, + { + "old": {"railway": "*", "abandoned": "yes"}, + "replace": {"abandoned:railway": "$1"} + }, + { + "old": {"railway": "*", "disused": "yes"}, + "replace": {"disused:railway": "$1"} + }, + { + "old": {"railway": "platform"}, + "replace": {"railway": "platform", "public_transport": "platform"} + }, + { + "old": {"railway": "station"}, + "replace": {"railway": "station", "public_transport": "station"} + }, + { + "old": {"railway": "tram_stop"}, + "replace": {"railway": "tram_stop", "public_transport": "stop_position", "tram": "yes"} + }, + { + "old": {"recommended_speed": "*"}, + "replace": {"maxspeed:advisory": "$1"} + }, + { + "old": {"recommended_speed:backward": "*"}, + "replace": {"maxspeed:advisory:backward": "$1"} + }, + { + "old": {"recommended_speed:forward": "*"}, + "replace": {"maxspeed:advisory:forward": "$1"} + }, + { + "old": {"religion": "catholic"}, + "replace": {"religion": "christian", "denomination": "catholic"} + }, + { + "old": {"reservations": "*"}, + "replace": {"reservation": "$1"} + }, + { + "old": {"roof:color": "*"}, + "replace": {"roof:colour": "$1"} + }, + { + "old": {"roof:shape": "half_hipped"}, + "replace": {"roof:shape": "half-hipped"} + }, + { + "old": {"route": "ncn"}, + "replace": {"route": "bicycle", "network": "ncn"} + }, + { + "old": {"rwn_expected_route_relations": "*"}, + "replace": {"expected_rwn_route_relations": "$1"} + }, + { + "old": {"shop": "adult"}, + "replace": {"shop": "erotic"} + }, + { + "old": {"shop": "antique"}, + "replace": {"shop": "antiques"} + }, + { + "old": {"shop": "army_surplus"}, + "replace": {"shop": "military_surplus"} + }, + { + "old": {"shop": "auto_parts"}, + "replace": {"shop": "car_parts"} + }, + { + "old": {"shop": "baby"}, + "replace": {"shop": "baby_goods"} + }, + { + "old": {"shop": "baby_care"}, + "replace": {"shop": "baby_goods"} + }, + { + "old": {"shop": "bags"}, + "replace": {"shop": "bag"} + }, + { + "old": {"shop": "bail_bond"}, + "replace": {"office": "bail_bond_agent"} + }, + { + "old": {"shop": "bail_bonds"}, + "replace": {"office": "bail_bond_agent"} + }, + { + "old": {"shop": "betting"}, + "replace": {"shop": "bookmaker"} + }, + { + "old": {"shop": "boutique"}, + "replace": {"shop": "clothes"} + }, + { + "old": {"shop": "cafe"}, + "replace": {"amenity": "cafe"} + }, + { + "old": {"shop": "consulting"}, + "replace": {"office": "consulting"} + }, + { + "old": {"shop": "dive"}, + "replace": {"shop": "scuba_diving"} + }, + { + "old": {"shop": "fashion"}, + "replace": {"shop": "clothes"} + }, + { + "old": {"shop": "fish"}, + "replace": {"shop": "seafood"} + }, + { + "old": {"shop": "fishmonger"}, + "replace": {"shop": "seafood"} + }, + { + "old": {"shop": "furnace"}, + "replace": {"shop": "fireplace"} + }, + { + "old": {"shop": "gallery"}, + "replace": {"shop": "art"} + }, + { + "old": {"shop": "jewellery"}, + "replace": {"shop": "jewelry"} + }, + { + "old": {"shop": "lingerie"}, + "replace": {"shop": "clothes", "clothes": "underwear"} + }, + { + "old": {"shop": "luggage"}, + "replace": {"shop": "bag"} + }, + { + "old": {"shop": "money_transfer"}, + "replace": {"amenity": "money_transfer"} + }, + { + "old": {"shop": "moneylender"}, + "replace": {"shop": "money_lender"} + }, + { + "old": {"shop": "organic"}, + "replace": {"shop": "supermarket", "organic": "only"} + }, + { + "old": {"shop": "perfume"}, + "replace": {"shop": "perfumery"} + }, + { + "old": {"shop": "real_estate"}, + "replace": {"office": "estate_agent"} + }, + { + "old": {"shop": "tickets"}, + "replace": {"shop": "ticket"} + }, + { + "old": {"shop": "underwear"}, + "replace": {"shop": "clothes", "clothes": "underwear"} + }, + { + "old": {"shop": "winery"}, + "replace": {"craft": "winery"} + }, + { + "old": {"showers": "*"}, + "replace": {"shower": "$1"} + }, + { + "old": {"sloped_curb": "0"}, + "replace": {"kerb": "flush"} + }, + { + "old": {"sloped_curb": "0.00"}, + "replace": {"kerb": "flush"} + }, + { + "old": {"sloped_curb": "0.01"}, + "replace": {"kerb": "lowered", "kerb:height": "1 cm"} + }, + { + "old": {"sloped_curb": "0.02"}, + "replace": {"kerb": "lowered", "kerb:height": "2 cm"} + }, + { + "old": {"sloped_curb": "0.03"}, + "replace": {"kerb": "lowered", "kerb:height": "3 cm"} + }, + { + "old": {"sloped_curb": "at_grade"}, + "replace": {"kerb": "flush"} + }, + { + "old": {"sloped_curb": "both"}, + "replace": {"kerb": "lowered"} + }, + { + "old": {"sloped_curb": "flush"}, + "replace": {"kerb": "flush"} + }, + { + "old": {"sloped_curb": "low"}, + "replace": {"kerb": "lowered"} + }, + { + "old": {"sloped_curb": "no"}, + "replace": {"kerb": "raised"} + }, + { + "old": {"sloped_curb": "yes"}, + "replace": {"kerb": "lowered"} + }, + { + "old": {"speed_limit": "*"}, + "replace": {"maxspeed": "$1"} + }, + { + "old": {"speedlimit": "*"}, + "replace": {"maxspeed": "$1"} + }, + { + "old": {"SpeedLimit": "*"}, + "replace": {"maxspeed": "$1"} + }, + { + "old": {"SPEEDLIMIT": "*"}, + "replace": {"maxspeed": "$1"} + }, + { + "old": {"sport": "horse_shoes"}, + "replace": {"sport": "horseshoes"} + }, + { + "old": {"sport": "horseshoe"}, + "replace": {"sport": "horseshoes"} + }, + { + "old": {"sport": "shuffle_board"}, + "replace": {"sport": "shuffleboard"} + }, + { + "old": {"station": "light_rail"}, + "replace": {"station": "light_rail", "light_rail": "yes"} + }, + { + "old": {"station": "monorail"}, + "replace": {"station": "monorail", "monorail": "yes"} + }, + { + "old": {"station": "subway"}, + "replace": {"station": "subway", "subway": "yes"} + }, + { + "old": {"station": "train"}, + "replace": {"station": "train", "train": "yes"} + }, + { + "old": {"sustenance": "bar"}, + "replace": {"amenity": "bar"} + }, + { + "old": {"sustenance": "cafe"}, + "replace": {"amenity": "cafe"} + }, + { + "old": {"sustenance": "pub"}, + "replace": {"amenity": "pub"} + }, + { + "old": {"sustenance": "restaurant"}, + "replace": {"amenity": "restaurant"} + }, + { + "old": {"theatre:type": "amphitheatre"}, + "replace": {"theatre:type": "amphi"} + }, + { + "old": {"todo": "*"}, + "replace": {"fixme": "$1"} + }, + { + "old": {"TODO": "*"}, + "replace": {"fixme": "$1"} + }, + { + "old": {"toilets:disposal": "longdrop"}, + "replace": {"toilets:disposal": "pitlatrine"} + }, + { + "old": {"toilets:disposal": "pit_latrine"}, + "replace": {"toilets:disposal": "pitlatrine"} + }, + { + "old": {"tourism": "bed_and_breakfast"}, + "replace": {"tourism": "guest_house", "guest_house": "bed_and_breakfast"} + }, + { + "old": {"tower:type": "power"}, + "replace": {"power": "tower"} + }, + { + "old": {"tower:type": "anchor"}, + "replace": {"line_attachment": "anchor"} + }, + { + "old": {"tower:type": "suspension"}, + "replace": {"line_attachment": "suspension"} + }, + { + "old": {"townhall:village": "yes"}, + "replace": {"amenity": "townhall", "townhall:type": "village"} + }, + { + "old": {"type": "audio", "amenity": "studio"}, + "replace": {"studio": "audio"} + }, + { + "old": {"type": "broad_leaved"}, + "replace": {"leaf_type": "broadleaved"} + }, + { + "old": {"type": "caldera"}, + "replace": {"volcano:type": "caldera"} + }, + { + "old": {"type": "conifer"}, + "replace": {"leaf_type": "needleleaved"} + }, + { + "old": {"type": "deciduous"}, + "replace": {"leaf_cycle": "deciduous"} + }, + { + "old": {"type": "extinct"}, + "replace": {"volcano:status": "extinct"} + }, + { + "old": {"type": "scoria"}, + "replace": {"volcano:type": "scoria"} + }, + { + "old": {"type": "shield"}, + "replace": {"volcano:type": "shield"} + }, + { + "old": {"type": "strato"}, + "replace": {"volcano:type": "stratovolcano"} + }, + { + "old": {"type": "video", "amenity": "studio"}, + "replace": {"studio": "video"} + }, + { + "old": {"unnamed": "*"}, + "replace": {"noname": "$1"} + }, + { + "old": {"volcano": "extinct"}, + "replace": {"volcano:status": "extinct"} + }, + { + "old": {"wall_type": "noise_barrier"}, + "replace": {"wall": "noise_barrier"} + }, + { + "old": {"water": "intermittent"}, + "replace": {"natural": "water", "intermittent": "yes"} + }, + { + "old": {"water": "riverbank"}, + "replace": {"natural": "water", "water": "river"} + }, + { + "old": {"water": "salt"}, + "replace": {"natural": "water", "salt": "yes"} + }, + { + "old": {"water": "tidal"}, + "replace": {"natural": "water", "tidal": "yes"} + }, + { + "old": {"waterway": "aqueduct"}, + "replace": {"waterway": "canal", "bridge": "aqueduct"} + }, + { + "old": {"waterway": "lock"}, + "replace": {"waterway": "canal", "lock": "yes"} + }, + { + "old": {"waterway": "riverbank"}, + "replace": {"natural": "water", "water": "river"} + }, + { + "old": {"wifi": "yes"}, + "replace": {"internet_access": "wlan"} + }, + { + "old": {"wifi": "free"}, + "replace": {"internet_access": "wlan", "internet_access:fee": "no"} + }, + { + "old": {"women": "*"}, + "replace": {"female": "$1"} + }, + { + "old": {"wood": "coniferous"}, + "replace": {"leaf_type": "needleleaved"} + }, + { + "old": {"wood": "deciduous"}, + "replace": {"leaf_cycle": "deciduous"} + }, + { + "old": {"wood": "evergreen"}, + "replace": {"leaf_cycle": "evergreen"} + }, + { + "old": {"wood": "mixed"}, + "replace": {"leaf_cycle": "mixed", "leaf_type": "mixed"} + } +] diff --git a/data/discarded.json b/data/discarded.json index 4cca248d7..12dae8b21 100644 --- a/data/discarded.json +++ b/data/discarded.json @@ -1,58 +1,56 @@ { - "dataDiscarded": { - "created_by": true, + "created_by": true, - "odbl": true, - "odbl:note": true, + "odbl": true, + "odbl:note": true, - "tiger:upload_uuid": true, - "tiger:tlid": true, - "tiger:source": true, - "tiger:separated": true, + "tiger:upload_uuid": true, + "tiger:tlid": true, + "tiger:source": true, + "tiger:separated": true, - "geobase:datasetName": true, - "geobase:uuid": true, + "geobase:datasetName": true, + "geobase:uuid": true, - "osmarender:nameDirection": true, - "osmarender:renderName": true, - "osmarender:renderRef": true, - "osmarender:rendernames": true, + "osmarender:nameDirection": true, + "osmarender:renderName": true, + "osmarender:renderRef": true, + "osmarender:rendernames": true, - "sub_sea:type": true, + "sub_sea:type": true, - "KSJ2:ADS": true, - "KSJ2:ARE": true, - "KSJ2:AdminArea": true, - "KSJ2:COP_label": true, - "KSJ2:DFD": true, - "KSJ2:INT": true, - "KSJ2:INT_label": true, - "KSJ2:LOC": true, - "KSJ2:LPN": true, - "KSJ2:OPC": true, - "KSJ2:PubFacAdmin": true, - "KSJ2:RAC": true, - "KSJ2:RAC_label": true, - "KSJ2:RIC": true, - "KSJ2:RIN": true, - "KSJ2:WSC": true, - "KSJ2:coordinate": true, - "KSJ2:curve_id": true, - "KSJ2:curve_type": true, - "KSJ2:filename": true, - "KSJ2:lake_id": true, - "KSJ2:lat": true, - "KSJ2:long": true, - "KSJ2:river_id": true, + "KSJ2:ADS": true, + "KSJ2:ARE": true, + "KSJ2:AdminArea": true, + "KSJ2:COP_label": true, + "KSJ2:DFD": true, + "KSJ2:INT": true, + "KSJ2:INT_label": true, + "KSJ2:LOC": true, + "KSJ2:LPN": true, + "KSJ2:OPC": true, + "KSJ2:PubFacAdmin": true, + "KSJ2:RAC": true, + "KSJ2:RAC_label": true, + "KSJ2:RIC": true, + "KSJ2:RIN": true, + "KSJ2:WSC": true, + "KSJ2:coordinate": true, + "KSJ2:curve_id": true, + "KSJ2:curve_type": true, + "KSJ2:filename": true, + "KSJ2:lake_id": true, + "KSJ2:lat": true, + "KSJ2:long": true, + "KSJ2:river_id": true, - "SK53_bulk:load": true, + "SK53_bulk:load": true, - "yh:LINE_NAME": true, - "yh:LINE_NUM": true, - "yh:STRUCTURE": true, - "yh:TOTYUMONO": true, - "yh:TYPE": true, - "yh:WIDTH": true, - "yh:WIDTH_RANK": true - } + "yh:LINE_NAME": true, + "yh:LINE_NUM": true, + "yh:STRUCTURE": true, + "yh:TOTYUMONO": true, + "yh:TYPE": true, + "yh:WIDTH": true, + "yh:WIDTH_RANK": true } diff --git a/data/index.js b/data/index.js index 418cd4cb5..3ee567f12 100644 --- a/data/index.js +++ b/data/index.js @@ -1,14 +1,6 @@ export { wikipedia as dataWikipedia } from 'wmf-sitematrix'; -export { dataAddressFormats } from './address-formats.json'; -export { dataDeprecated } from './deprecated.json'; -export { dataDiscarded } from './discarded.json'; -export { dataLanguages } from './languages.json'; export { dataLocales } from './locales.json'; -export { dataPhoneFormats } from './phone-formats.json'; -export { dataShortcuts } from './shortcuts.json'; -export { dataTerritoryLanguages } from './territory-languages.json'; - export { en as dataEn } from '../dist/locales/en.json'; import { diff --git a/dist/data/intro_graph.json b/data/intro_graph.json similarity index 100% rename from dist/data/intro_graph.json rename to data/intro_graph.json diff --git a/data/languages.json b/data/languages.json index e54fad89b..455d5079a 100644 --- a/data/languages.json +++ b/data/languages.json @@ -1,729 +1,235 @@ { - "dataLanguages": { - "af": { - "nativeName": "Afrikaans" - }, - "agq": { - "nativeName": "Aghem" - }, - "ak": { - "nativeName": "Akan" - }, - "am": { - "nativeName": "አማርኛ" - }, - "ar": { - "nativeName": "العربية" - }, - "as": { - "nativeName": "অসমীয়া" - }, - "asa": { - "nativeName": "Kipare" - }, - "ast": { - "nativeName": "asturianu" - }, - "az": { - "nativeName": "azərbaycan" - }, - "az-Cyrl": { - "base": "az", - "script": "Cyrl" - }, - "az-Latn": { - "base": "az", - "script": "Latn" - }, - "bas": { - "nativeName": "Ɓàsàa" - }, - "be": { - "nativeName": "беларуская" - }, - "bem": { - "nativeName": "Ichibemba" - }, - "bez": { - "nativeName": "Hibena" - }, - "bg": { - "nativeName": "български" - }, - "bm": { - "nativeName": "bamanakan" - }, - "bn": { - "nativeName": "বাংলা" - }, - "bo": { - "nativeName": "བོད་སྐད་" - }, - "br": { - "nativeName": "brezhoneg" - }, - "brx": { - "nativeName": "बड़ो" - }, - "bs": { - "nativeName": "bosanski" - }, - "bs-Cyrl": { - "base": "bs", - "script": "Cyrl" - }, - "bs-Latn": { - "base": "bs", - "script": "Latn" - }, - "ca": { - "nativeName": "català" - }, - "ccp": { - "nativeName": "𑄌𑄋𑄴𑄟𑄳𑄦" - }, - "ce": { - "nativeName": "нохчийн" - }, - "ceb": { - "nativeName": "Binisaya" - }, - "cgg": { - "nativeName": "Rukiga" - }, - "chr": { - "nativeName": "ᏣᎳᎩ" - }, - "ckb": { - "nativeName": "کوردیی ناوەندی" - }, - "cs": { - "nativeName": "čeština" - }, - "cu": { - "nativeName": "cu" - }, - "cy": { - "nativeName": "Cymraeg" - }, - "da": { - "nativeName": "dansk" - }, - "dav": { - "nativeName": "Kitaita" - }, - "de": { - "nativeName": "Deutsch" - }, - "dje": { - "nativeName": "Zarmaciine" - }, - "dsb": { - "nativeName": "dolnoserbšćina" - }, - "dua": { - "nativeName": "duálá" - }, - "dyo": { - "nativeName": "joola" - }, - "dz": { - "nativeName": "རྫོང་ཁ" - }, - "ebu": { - "nativeName": "Kĩembu" - }, - "ee": { - "nativeName": "Eʋegbe" - }, - "el": { - "nativeName": "Ελληνικά" - }, - "en": { - "nativeName": "English" - }, - "eo": { - "nativeName": "esperanto" - }, - "es": { - "nativeName": "español" - }, - "et": { - "nativeName": "eesti" - }, - "eu": { - "nativeName": "euskara" - }, - "ewo": { - "nativeName": "ewondo" - }, - "fa": { - "nativeName": "فارسی" - }, - "ff": { - "nativeName": "Pulaar" - }, - "ff-Latn": { - "base": "ff", - "script": "Latn" - }, - "fi": { - "nativeName": "suomi" - }, - "fil": { - "nativeName": "Filipino" - }, - "fo": { - "nativeName": "føroyskt" - }, - "fr": { - "nativeName": "français" - }, - "fur": { - "nativeName": "furlan" - }, - "fy": { - "nativeName": "Frysk" - }, - "ga": { - "nativeName": "Gaeilge" - }, - "gd": { - "nativeName": "Gàidhlig" - }, - "gl": { - "nativeName": "galego" - }, - "gsw": { - "nativeName": "Schwiizertüütsch" - }, - "gu": { - "nativeName": "ગુજરાતી" - }, - "guz": { - "nativeName": "Ekegusii" - }, - "gv": { - "nativeName": "Gaelg" - }, - "ha": { - "nativeName": "Hausa" - }, - "haw": { - "nativeName": "ʻŌlelo Hawaiʻi" - }, - "he": { - "nativeName": "עברית" - }, - "hi": { - "nativeName": "हिन्दी" - }, - "hr": { - "nativeName": "hrvatski" - }, - "hsb": { - "nativeName": "hornjoserbšćina" - }, - "hu": { - "nativeName": "magyar" - }, - "hy": { - "nativeName": "հայերեն" - }, - "ia": { - "nativeName": "interlingua" - }, - "id": { - "nativeName": "Indonesia" - }, - "ig": { - "nativeName": "Asụsụ Igbo" - }, - "ii": { - "nativeName": "ꆈꌠꉙ" - }, - "is": { - "nativeName": "íslenska" - }, - "it": { - "nativeName": "italiano" - }, - "ja": { - "nativeName": "日本語" - }, - "ja-Hira": { - "base": "ja", - "script": "Hira" - }, - "ja-Latn": { - "base": "ja", - "script": "Latn" - }, - "jgo": { - "nativeName": "Ndaꞌa" - }, - "jmc": { - "nativeName": "Kimachame" - }, - "jv": { - "nativeName": "Jawa" - }, - "ka": { - "nativeName": "ქართული" - }, - "kab": { - "nativeName": "Taqbaylit" - }, - "kam": { - "nativeName": "Kikamba" - }, - "kde": { - "nativeName": "Chimakonde" - }, - "kea": { - "nativeName": "kabuverdianu" - }, - "khq": { - "nativeName": "Koyra ciini" - }, - "ki": { - "nativeName": "Gikuyu" - }, - "kk": { - "nativeName": "қазақ тілі" - }, - "kkj": { - "nativeName": "kakɔ" - }, - "kl": { - "nativeName": "kalaallisut" - }, - "kln": { - "nativeName": "Kalenjin" - }, - "km": { - "nativeName": "ខ្មែរ" - }, - "kn": { - "nativeName": "ಕನ್ನಡ" - }, - "ko": { - "nativeName": "한국어" - }, - "ko-Latn": { - "base": "ko", - "script": "Latn" - }, - "kok": { - "nativeName": "कोंकणी" - }, - "ks": { - "nativeName": "کٲشُر" - }, - "ksb": { - "nativeName": "Kishambaa" - }, - "ksf": { - "nativeName": "rikpa" - }, - "ksh": { - "nativeName": "Kölsch" - }, - "ku": { - "nativeName": "kurdî" - }, - "kw": { - "nativeName": "kernewek" - }, - "ky": { - "nativeName": "кыргызча" - }, - "lag": { - "nativeName": "Kɨlaangi" - }, - "lb": { - "nativeName": "Lëtzebuergesch" - }, - "lg": { - "nativeName": "Luganda" - }, - "lkt": { - "nativeName": "Lakȟólʼiyapi" - }, - "ln": { - "nativeName": "lingála" - }, - "lo": { - "nativeName": "ລາວ" - }, - "lrc": { - "nativeName": "لۊری شومالی" - }, - "lt": { - "nativeName": "lietuvių" - }, - "lu": { - "nativeName": "Tshiluba" - }, - "luo": { - "nativeName": "Dholuo" - }, - "luy": { - "nativeName": "Luluhia" - }, - "lv": { - "nativeName": "latviešu" - }, - "mas": { - "nativeName": "Maa" - }, - "mer": { - "nativeName": "Kĩmĩrũ" - }, - "mfe": { - "nativeName": "kreol morisien" - }, - "mg": { - "nativeName": "Malagasy" - }, - "mgh": { - "nativeName": "Makua" - }, - "mgo": { - "nativeName": "metaʼ" - }, - "mi": { - "nativeName": "Māori" - }, - "mk": { - "nativeName": "македонски" - }, - "ml": { - "nativeName": "മലയാളം" - }, - "mn": { - "nativeName": "монгол" - }, - "mr": { - "nativeName": "मराठी" - }, - "ms": { - "nativeName": "Melayu" - }, - "mt": { - "nativeName": "Malti" - }, - "mua": { - "nativeName": "MUNDAŊ" - }, - "my": { - "nativeName": "မြန်မာ" - }, - "mzn": { - "nativeName": "مازرونی" - }, - "naq": { - "nativeName": "Khoekhoegowab" - }, - "nb": { - "nativeName": "norsk bokmål" - }, - "nd": { - "nativeName": "isiNdebele" - }, - "nds": { - "nativeName": "nds" - }, - "ne": { - "nativeName": "नेपाली" - }, - "nl": { - "nativeName": "Nederlands" - }, - "nmg": { - "nativeName": "nmg" - }, - "nn": { - "nativeName": "nynorsk" - }, - "nnh": { - "nativeName": "Shwóŋò ngiembɔɔn" - }, - "nus": { - "nativeName": "Thok Nath" - }, - "nyn": { - "nativeName": "Runyankore" - }, - "oc": { - "nativeName": "Occitan" - }, - "om": { - "nativeName": "Oromoo" - }, - "or": { - "nativeName": "ଓଡ଼ିଆ" - }, - "os": { - "nativeName": "ирон" - }, - "pa": { - "nativeName": "ਪੰਜਾਬੀ" - }, - "pa-Arab": { - "base": "pa", - "script": "Arab" - }, - "pa-Guru": { - "base": "pa", - "script": "Guru" - }, - "pl": { - "nativeName": "polski" - }, - "prg": { - "nativeName": "prūsiskan" - }, - "ps": { - "nativeName": "پښتو" - }, - "pt": { - "nativeName": "português" - }, - "qu": { - "nativeName": "Runasimi" - }, - "rm": { - "nativeName": "rumantsch" - }, - "rn": { - "nativeName": "Ikirundi" - }, - "ro": { - "nativeName": "română" - }, - "rof": { - "nativeName": "Kihorombo" - }, - "root": { - "nativeName": "root" - }, - "ru": { - "nativeName": "русский" - }, - "rw": { - "nativeName": "Kinyarwanda" - }, - "rwk": { - "nativeName": "Kiruwa" - }, - "sah": { - "nativeName": "саха тыла" - }, - "saq": { - "nativeName": "Kisampur" - }, - "sbp": { - "nativeName": "Ishisangu" - }, - "sd": { - "nativeName": "سنڌي" - }, - "se": { - "nativeName": "davvisámegiella" - }, - "seh": { - "nativeName": "sena" - }, - "ses": { - "nativeName": "Koyraboro senni" - }, - "sg": { - "nativeName": "Sängö" - }, - "shi": { - "nativeName": "ⵜⴰⵛⵍⵃⵉⵜ" - }, - "shi-Latn": { - "base": "shi", - "script": "Latn" - }, - "shi-Tfng": { - "base": "shi", - "script": "Tfng" - }, - "si": { - "nativeName": "සිංහල" - }, - "sk": { - "nativeName": "slovenčina" - }, - "sl": { - "nativeName": "slovenščina" - }, - "smn": { - "nativeName": "anarâškielâ" - }, - "sn": { - "nativeName": "chiShona" - }, - "so": { - "nativeName": "Soomaali" - }, - "sq": { - "nativeName": "shqip" - }, - "sr": { - "nativeName": "српски" - }, - "sr-Cyrl": { - "base": "sr", - "script": "Cyrl" - }, - "sr-Latn": { - "base": "sr", - "script": "Latn" - }, - "sv": { - "nativeName": "svenska" - }, - "sw": { - "nativeName": "Kiswahili" - }, - "ta": { - "nativeName": "தமிழ்" - }, - "te": { - "nativeName": "తెలుగు" - }, - "teo": { - "nativeName": "Kiteso" - }, - "tg": { - "nativeName": "тоҷикӣ" - }, - "th": { - "nativeName": "ไทย" - }, - "ti": { - "nativeName": "ትግርኛ" - }, - "tk": { - "nativeName": "türkmen dili" - }, - "to": { - "nativeName": "lea fakatonga" - }, - "tr": { - "nativeName": "Türkçe" - }, - "tt": { - "nativeName": "татар" - }, - "twq": { - "nativeName": "Tasawaq senni" - }, - "tzm": { - "nativeName": "Tamaziɣt n laṭlaṣ" - }, - "ug": { - "nativeName": "ئۇيغۇرچە" - }, - "uk": { - "nativeName": "українська" - }, - "ur": { - "nativeName": "اردو" - }, - "uz": { - "nativeName": "o‘zbek" - }, - "uz-Arab": { - "base": "uz", - "script": "Arab" - }, - "uz-Cyrl": { - "base": "uz", - "script": "Cyrl" - }, - "uz-Latn": { - "base": "uz", - "script": "Latn" - }, - "vai": { - "nativeName": "ꕙꔤ" - }, - "vai-Latn": { - "base": "vai", - "script": "Latn" - }, - "vai-Vaii": { - "base": "vai", - "script": "Vaii" - }, - "vi": { - "nativeName": "Tiếng Việt" - }, - "vo": { - "nativeName": "vo" - }, - "vun": { - "nativeName": "Kyivunjo" - }, - "wae": { - "nativeName": "Walser" - }, - "wo": { - "nativeName": "Wolof" - }, - "xh": { - "nativeName": "isiXhosa" - }, - "xog": { - "nativeName": "Olusoga" - }, - "yav": { - "nativeName": "nuasue" - }, - "yi": { - "nativeName": "ייִדיש" - }, - "yo": { - "nativeName": "Èdè Yorùbá" - }, - "yue": { - "nativeName": "粵語" - }, - "yue-Hans": { - "base": "yue", - "script": "Hans" - }, - "yue-Hant": { - "base": "yue", - "script": "Hant" - }, - "zgh": { - "nativeName": "ⵜⴰⵎⴰⵣⵉⵖⵜ" - }, - "zh": { - "nativeName": "中文" - }, - "zh-Hans": { - "base": "zh", - "script": "Hans", - "nativeName": "简体中文" - }, - "zh-Hant": { - "base": "zh", - "script": "Hant", - "nativeName": "繁體中文" - }, - "zh_pinyin": { - "base": "zh", - "script": "Latn" - }, - "zu": { - "nativeName": "isiZulu" - } - } + "af": {"nativeName": "Afrikaans"}, + "agq": {"nativeName": "Aghem"}, + "ak": {"nativeName": "Akan"}, + "am": {"nativeName": "አማርኛ"}, + "ar": {"nativeName": "العربية"}, + "as": {"nativeName": "অসমীয়া"}, + "asa": {"nativeName": "Kipare"}, + "ast": {"nativeName": "asturianu"}, + "az": {"nativeName": "azərbaycan"}, + "az-Cyrl": {"base": "az", "script": "Cyrl"}, + "az-Latn": {"base": "az", "script": "Latn"}, + "bas": {"nativeName": "Ɓàsàa"}, + "be": {"nativeName": "беларуская"}, + "bem": {"nativeName": "Ichibemba"}, + "bez": {"nativeName": "Hibena"}, + "bg": {"nativeName": "български"}, + "bm": {"nativeName": "bamanakan"}, + "bn": {"nativeName": "বাংলা"}, + "bo": {"nativeName": "བོད་སྐད་"}, + "br": {"nativeName": "brezhoneg"}, + "brx": {"nativeName": "बड़ो"}, + "bs": {"nativeName": "bosanski"}, + "bs-Cyrl": {"base": "bs", "script": "Cyrl"}, + "bs-Latn": {"base": "bs", "script": "Latn"}, + "ca": {"nativeName": "català"}, + "ccp": {"nativeName": "𑄌𑄋𑄴𑄟𑄳𑄦"}, + "ce": {"nativeName": "нохчийн"}, + "ceb": {"nativeName": "Binisaya"}, + "cgg": {"nativeName": "Rukiga"}, + "chr": {"nativeName": "ᏣᎳᎩ"}, + "ckb": {"nativeName": "کوردیی ناوەندی"}, + "cs": {"nativeName": "čeština"}, + "cu": {"nativeName": "cu"}, + "cy": {"nativeName": "Cymraeg"}, + "da": {"nativeName": "dansk"}, + "dav": {"nativeName": "Kitaita"}, + "de": {"nativeName": "Deutsch"}, + "dje": {"nativeName": "Zarmaciine"}, + "dsb": {"nativeName": "dolnoserbšćina"}, + "dua": {"nativeName": "duálá"}, + "dyo": {"nativeName": "joola"}, + "dz": {"nativeName": "རྫོང་ཁ"}, + "ebu": {"nativeName": "Kĩembu"}, + "ee": {"nativeName": "Eʋegbe"}, + "el": {"nativeName": "Ελληνικά"}, + "en": {"nativeName": "English"}, + "eo": {"nativeName": "esperanto"}, + "es": {"nativeName": "español"}, + "et": {"nativeName": "eesti"}, + "eu": {"nativeName": "euskara"}, + "ewo": {"nativeName": "ewondo"}, + "fa": {"nativeName": "فارسی"}, + "ff": {"nativeName": "Pulaar"}, + "ff-Latn": {"base": "ff", "script": "Latn"}, + "fi": {"nativeName": "suomi"}, + "fil": {"nativeName": "Filipino"}, + "fo": {"nativeName": "føroyskt"}, + "fr": {"nativeName": "français"}, + "fur": {"nativeName": "furlan"}, + "fy": {"nativeName": "Frysk"}, + "ga": {"nativeName": "Gaeilge"}, + "gd": {"nativeName": "Gàidhlig"}, + "gl": {"nativeName": "galego"}, + "gsw": {"nativeName": "Schwiizertüütsch"}, + "gu": {"nativeName": "ગુજરાતી"}, + "guz": {"nativeName": "Ekegusii"}, + "gv": {"nativeName": "Gaelg"}, + "ha": {"nativeName": "Hausa"}, + "haw": {"nativeName": "ʻŌlelo Hawaiʻi"}, + "he": {"nativeName": "עברית"}, + "hi": {"nativeName": "हिन्दी"}, + "hr": {"nativeName": "hrvatski"}, + "hsb": {"nativeName": "hornjoserbšćina"}, + "hu": {"nativeName": "magyar"}, + "hy": {"nativeName": "հայերեն"}, + "ia": {"nativeName": "interlingua"}, + "id": {"nativeName": "Indonesia"}, + "ig": {"nativeName": "Asụsụ Igbo"}, + "ii": {"nativeName": "ꆈꌠꉙ"}, + "is": {"nativeName": "íslenska"}, + "it": {"nativeName": "italiano"}, + "ja": {"nativeName": "日本語"}, + "ja-Hira": {"base": "ja", "script": "Hira"}, + "ja-Latn": {"base": "ja", "script": "Latn"}, + "jgo": {"nativeName": "Ndaꞌa"}, + "jmc": {"nativeName": "Kimachame"}, + "jv": {"nativeName": "Jawa"}, + "ka": {"nativeName": "ქართული"}, + "kab": {"nativeName": "Taqbaylit"}, + "kam": {"nativeName": "Kikamba"}, + "kde": {"nativeName": "Chimakonde"}, + "kea": {"nativeName": "kabuverdianu"}, + "khq": {"nativeName": "Koyra ciini"}, + "ki": {"nativeName": "Gikuyu"}, + "kk": {"nativeName": "қазақ тілі"}, + "kkj": {"nativeName": "kakɔ"}, + "kl": {"nativeName": "kalaallisut"}, + "kln": {"nativeName": "Kalenjin"}, + "km": {"nativeName": "ខ្មែរ"}, + "kn": {"nativeName": "ಕನ್ನಡ"}, + "ko": {"nativeName": "한국어"}, + "ko-Latn": {"base": "ko", "script": "Latn"}, + "kok": {"nativeName": "कोंकणी"}, + "ks": {"nativeName": "کٲشُر"}, + "ksb": {"nativeName": "Kishambaa"}, + "ksf": {"nativeName": "rikpa"}, + "ksh": {"nativeName": "Kölsch"}, + "ku": {"nativeName": "kurdî"}, + "kw": {"nativeName": "kernewek"}, + "ky": {"nativeName": "кыргызча"}, + "lag": {"nativeName": "Kɨlaangi"}, + "lb": {"nativeName": "Lëtzebuergesch"}, + "lg": {"nativeName": "Luganda"}, + "lkt": {"nativeName": "Lakȟólʼiyapi"}, + "ln": {"nativeName": "lingála"}, + "lo": {"nativeName": "ລາວ"}, + "lrc": {"nativeName": "لۊری شومالی"}, + "lt": {"nativeName": "lietuvių"}, + "lu": {"nativeName": "Tshiluba"}, + "luo": {"nativeName": "Dholuo"}, + "luy": {"nativeName": "Luluhia"}, + "lv": {"nativeName": "latviešu"}, + "mas": {"nativeName": "Maa"}, + "mer": {"nativeName": "Kĩmĩrũ"}, + "mfe": {"nativeName": "kreol morisien"}, + "mg": {"nativeName": "Malagasy"}, + "mgh": {"nativeName": "Makua"}, + "mgo": {"nativeName": "metaʼ"}, + "mi": {"nativeName": "Māori"}, + "mk": {"nativeName": "македонски"}, + "ml": {"nativeName": "മലയാളം"}, + "mn": {"nativeName": "монгол"}, + "mr": {"nativeName": "मराठी"}, + "ms": {"nativeName": "Melayu"}, + "mt": {"nativeName": "Malti"}, + "mua": {"nativeName": "MUNDAŊ"}, + "my": {"nativeName": "မြန်မာ"}, + "mzn": {"nativeName": "مازرونی"}, + "naq": {"nativeName": "Khoekhoegowab"}, + "nb": {"nativeName": "norsk bokmål"}, + "nd": {"nativeName": "isiNdebele"}, + "nds": {"nativeName": "nds"}, + "ne": {"nativeName": "नेपाली"}, + "nl": {"nativeName": "Nederlands"}, + "nmg": {"nativeName": "nmg"}, + "nn": {"nativeName": "nynorsk"}, + "nnh": {"nativeName": "Shwóŋò ngiembɔɔn"}, + "nus": {"nativeName": "Thok Nath"}, + "nyn": {"nativeName": "Runyankore"}, + "oc": {"nativeName": "Occitan"}, + "om": {"nativeName": "Oromoo"}, + "or": {"nativeName": "ଓଡ଼ିଆ"}, + "os": {"nativeName": "ирон"}, + "pa": {"nativeName": "ਪੰਜਾਬੀ"}, + "pa-Arab": {"base": "pa", "script": "Arab"}, + "pa-Guru": {"base": "pa", "script": "Guru"}, + "pl": {"nativeName": "polski"}, + "prg": {"nativeName": "prūsiskan"}, + "ps": {"nativeName": "پښتو"}, + "pt": {"nativeName": "português"}, + "qu": {"nativeName": "Runasimi"}, + "rm": {"nativeName": "rumantsch"}, + "rn": {"nativeName": "Ikirundi"}, + "ro": {"nativeName": "română"}, + "rof": {"nativeName": "Kihorombo"}, + "root": {"nativeName": "root"}, + "ru": {"nativeName": "русский"}, + "rw": {"nativeName": "Kinyarwanda"}, + "rwk": {"nativeName": "Kiruwa"}, + "sah": {"nativeName": "саха тыла"}, + "saq": {"nativeName": "Kisampur"}, + "sbp": {"nativeName": "Ishisangu"}, + "sd": {"nativeName": "سنڌي"}, + "se": {"nativeName": "davvisámegiella"}, + "seh": {"nativeName": "sena"}, + "ses": {"nativeName": "Koyraboro senni"}, + "sg": {"nativeName": "Sängö"}, + "shi": {"nativeName": "ⵜⴰⵛⵍⵃⵉⵜ"}, + "shi-Latn": {"base": "shi", "script": "Latn"}, + "shi-Tfng": {"base": "shi", "script": "Tfng"}, + "si": {"nativeName": "සිංහල"}, + "sk": {"nativeName": "slovenčina"}, + "sl": {"nativeName": "slovenščina"}, + "smn": {"nativeName": "anarâškielâ"}, + "sn": {"nativeName": "chiShona"}, + "so": {"nativeName": "Soomaali"}, + "sq": {"nativeName": "shqip"}, + "sr": {"nativeName": "српски"}, + "sr-Cyrl": {"base": "sr", "script": "Cyrl"}, + "sr-Latn": {"base": "sr", "script": "Latn"}, + "sv": {"nativeName": "svenska"}, + "sw": {"nativeName": "Kiswahili"}, + "ta": {"nativeName": "தமிழ்"}, + "te": {"nativeName": "తెలుగు"}, + "teo": {"nativeName": "Kiteso"}, + "tg": {"nativeName": "тоҷикӣ"}, + "th": {"nativeName": "ไทย"}, + "ti": {"nativeName": "ትግርኛ"}, + "tk": {"nativeName": "türkmen dili"}, + "to": {"nativeName": "lea fakatonga"}, + "tr": {"nativeName": "Türkçe"}, + "tt": {"nativeName": "татар"}, + "twq": {"nativeName": "Tasawaq senni"}, + "tzm": {"nativeName": "Tamaziɣt n laṭlaṣ"}, + "ug": {"nativeName": "ئۇيغۇرچە"}, + "uk": {"nativeName": "українська"}, + "ur": {"nativeName": "اردو"}, + "uz": {"nativeName": "o‘zbek"}, + "uz-Arab": {"base": "uz", "script": "Arab"}, + "uz-Cyrl": {"base": "uz", "script": "Cyrl"}, + "uz-Latn": {"base": "uz", "script": "Latn"}, + "vai": {"nativeName": "ꕙꔤ"}, + "vai-Latn": {"base": "vai", "script": "Latn"}, + "vai-Vaii": {"base": "vai", "script": "Vaii"}, + "vi": {"nativeName": "Tiếng Việt"}, + "vo": {"nativeName": "vo"}, + "vun": {"nativeName": "Kyivunjo"}, + "wae": {"nativeName": "Walser"}, + "wo": {"nativeName": "Wolof"}, + "xh": {"nativeName": "isiXhosa"}, + "xog": {"nativeName": "Olusoga"}, + "yav": {"nativeName": "nuasue"}, + "yi": {"nativeName": "ייִדיש"}, + "yo": {"nativeName": "Èdè Yorùbá"}, + "yue": {"nativeName": "粵語"}, + "yue-Hans": {"base": "yue", "script": "Hans"}, + "yue-Hant": {"base": "yue", "script": "Hant"}, + "zgh": {"nativeName": "ⵜⴰⵎⴰⵣⵉⵖⵜ"}, + "zh": {"nativeName": "中文"}, + "zh-Hans": {"base": "zh", "script": "Hans", "nativeName": "简体中文"}, + "zh-Hant": {"base": "zh", "script": "Hant", "nativeName": "繁體中文"}, + "zh_pinyin": {"base": "zh", "script": "Latn"}, + "zu": {"nativeName": "isiZulu"} } \ No newline at end of file diff --git a/data/locales.json b/data/locales.json index 4c94c95dc..7c742b5df 100644 --- a/data/locales.json +++ b/data/locales.json @@ -53,6 +53,7 @@ "ml": {"rtl": false, "languageNames": {"aa": "അഫാർ", "ab": "അബ്‌ഖാസിയൻ", "ace": "അചിനീസ്", "ach": "അകോലി", "ada": "അഡാങ്‌മി", "ady": "അഡൈഗേ", "ae": "അവസ്റ്റാൻ", "af": "ആഫ്രിക്കാൻസ്", "afh": "ആഫ്രിഹിലി", "agq": "ആഘേം", "ain": "ഐനു", "ak": "അകാൻ‌", "akk": "അക്കാഡിയൻ", "ale": "അലൂട്ട്", "alt": "തെക്കൻ അൾത്തായി", "am": "അംഹാരിക്", "an": "അരഗോണീസ്", "ang": "പഴയ ഇംഗ്ലീഷ്", "anp": "ആൻഗിക", "ar": "അറബിക്", "ar-001": "ആധുനിക സ്റ്റാൻഡേർഡ് അറബിക്", "arc": "അരമായ", "arn": "മാപുചി", "arp": "അറാപഹോ", "arw": "അറാവക്", "as": "ആസ്സാമീസ്", "asa": "ആസു", "ast": "ഓസ്‌ട്രിയൻ", "av": "അവാരിക്", "awa": "അവാധി", "ay": "അയ്മാറ", "az": "അസർബൈജാനി", "ba": "ബഷ്ഖിർ", "bal": "ബലൂചി", "ban": "ബാലിനീസ്", "bas": "ബസ", "bax": "ബാമുൻ", "bbj": "ഘോമാല", "be": "ബെലാറുഷ്യൻ", "bej": "ബേജ", "bem": "ബേംബ", "bez": "ബെനാ", "bfd": "ബാഫട്ട്", "bg": "ബൾഗേറിയൻ", "bgn": "പശ്ചിമ ബലൂചി", "bho": "ഭോജ്‌പുരി", "bi": "ബിസ്‌ലാമ", "bik": "ബികോൽ", "bin": "ബിനി", "bkm": "കോം", "bla": "സിക്സിക", "bm": "ബംബാറ", "bn": "ബംഗാളി", "bo": "ടിബറ്റൻ", "br": "ബ്രെട്ടൺ", "bra": "ബ്രജ്", "brx": "ബോഡോ", "bs": "ബോസ്നിയൻ", "bss": "അക്കൂസ്", "bua": "ബുറിയത്ത്", "bug": "ബുഗിനീസ്", "bum": "ബുളു", "byn": "ബ്ലിൻ", "byv": "മെഡുംബ", "ca": "കറ്റാലാൻ", "cad": "കാഡോ", "car": "കാരിബ്", "cay": "കയൂഗ", "cch": "അറ്റ്സാം", "ccp": "ചക്‌മ", "ce": "ചെചൻ", "ceb": "സെബുവാനോ", "cgg": "ചിഗ", "ch": "ചമോറോ", "chb": "ചിബ്ച", "chg": "ഷാഗതായ്", "chk": "ചൂകീസ്", "chm": "മാരി", "chn": "ചിനൂഗ് ജാർഗൺ", "cho": "ചോക്റ്റാവ്", "chp": "ചിപേവ്യൻ", "chr": "ഷെരോക്കി", "chy": "ഷായാൻ", "ckb": "സെൻട്രൽ കുർദിഷ്", "co": "കോർസിക്കൻ", "cop": "കോപ്റ്റിക്", "cr": "ക്രീ", "crh": "ക്രിമിയൻ ടർക്കിഷ്", "crs": "സെഷൽവ ക്രിയോൾ ഫ്രഞ്ച്", "cs": "ചെക്ക്", "csb": "കാഷുബിയാൻ", "cu": "ചർച്ച് സ്ലാവിക്", "cv": "ചുവാഷ്", "cy": "വെൽഷ്", "da": "ഡാനിഷ്", "dak": "ഡകോട്ട", "dar": "ഡർഗ്വാ", "dav": "തൈത", "de": "ജർമ്മൻ", "de-AT": "ഓസ്‌ട്രിയൻ ജർമൻ", "de-CH": "സ്വിസ് ഹൈ ജർമൻ", "del": "ദെലവേർ", "den": "സ്ലേവ്", "dgr": "ഡോഗ്രിബ്", "din": "ദിൻക", "dje": "സാർമ്മ", "doi": "ഡോഗ്രി", "dsb": "ലോവർ സോർബിയൻ", "dua": "ദ്വാല", "dum": "മദ്ധ്യ ഡച്ച്", "dv": "ദിവെഹി", "dyo": "യോല-ഫോന്യി", "dyu": "ദ്വൈല", "dz": "ദ്‌സോങ്ക", "dzg": "ഡാസാഗ", "ebu": "എംബു", "ee": "യൂവ്", "efi": "എഫിക്", "egy": "പ്രാചീന ഈജിപ്ഷ്യൻ", "eka": "എകാജുക്", "el": "ഗ്രീക്ക്", "elx": "എലാമൈറ്റ്", "en": "ഇംഗ്ലീഷ്", "en-AU": "ഓസ്‌ട്രേലിയൻ ഇംഗ്ലീഷ്", "en-CA": "കനേഡിയൻ ഇംഗ്ലീഷ്", "en-GB": "ബ്രിട്ടീഷ് ഇംഗ്ലീഷ്", "en-US": "അമേരിക്കൻ ഇംഗ്ലീഷ്", "enm": "മദ്ധ്യ ഇംഗ്ലീഷ്", "eo": "എസ്‌പരാന്റോ", "es": "സ്‌പാനിഷ്", "es-419": "ലാറ്റിൻ അമേരിക്കൻ സ്‌പാനിഷ്", "es-ES": "യൂറോപ്യൻ സ്‌പാനിഷ്", "es-MX": "മെക്സിക്കൻ സ്പാനിഷ്", "et": "എസ്റ്റോണിയൻ", "eu": "ബാസ്‌ക്", "ewo": "എവോൻഡോ", "fa": "പേർഷ്യൻ", "fan": "ഫങ്", "fat": "ഫാന്റി", "ff": "ഫുല", "fi": "ഫിന്നിഷ്", "fil": "ഫിലിപ്പിനോ", "fj": "ഫിജിയൻ", "fo": "ഫാറോസ്", "fon": "ഫോൻ", "fr": "ഫ്രഞ്ച്", "fr-CA": "കനേഡിയൻ ഫ്രഞ്ച്", "fr-CH": "സ്വിസ് ഫ്രഞ്ച്", "frc": "കേജൺ ഫ്രഞ്ച്", "frm": "മദ്ധ്യ ഫ്രഞ്ച്", "fro": "പഴയ ഫ്രഞ്ച്", "frr": "നോർത്തേൻ ഫ്രിഷ്യൻ", "frs": "ഈസ്റ്റേൺ ഫ്രിഷ്യൻ", "fur": "ഫ്രിയുലിയാൻ", "fy": "പശ്ചിമ ഫ്രിഷിയൻ", "ga": "ഐറിഷ്", "gaa": "ഗാ", "gag": "ഗാഗൂസ്", "gan": "ഗാൻ ചൈനീസ്", "gay": "ഗയൊ", "gba": "ഗബ്യ", "gd": "സ്കോട്ടിഷ് ഗൈലിക്", "gez": "ഗീസ്", "gil": "ഗിൽബർട്ടീസ്", "gl": "ഗലീഷ്യൻ", "gmh": "മദ്ധ്യ ഉച്ച ജർമൻ", "gn": "ഗ്വരനീ", "goh": "ഓൾഡ് ഹൈ ജർമൻ", "gon": "ഗോണ്ഡി", "gor": "ഗൊറോന്റാലോ", "got": "ഗോഥിക്ക്", "grb": "ഗ്രബൊ", "grc": "പുരാതന ഗ്രീക്ക്", "gsw": "സ്വിസ് ജർമ്മൻ", "gu": "ഗുജറാത്തി", "guz": "ഗുസീ", "gv": "മാൻസ്", "gwi": "ഗ്വിച്ചിൻ", "ha": "ഹൗസ", "hai": "ഹൈഡ", "hak": "ഹാക്ക ചൈനീസ്", "haw": "ഹവായിയൻ", "he": "ഹീബ്രു", "hi": "ഹിന്ദി", "hil": "ഹിലിഗയ്നോൺ", "hit": "ഹിറ്റൈറ്റ്", "hmn": "മോങ്", "ho": "ഹിരി മോതു", "hr": "ക്രൊയേഷ്യൻ", "hsb": "അപ്പർ സോർബിയൻ", "hsn": "ഷ്യാങ് ചൈനീസ്", "ht": "ഹെയ്‌തിയൻ ക്രിയോൾ", "hu": "ഹംഗേറിയൻ", "hup": "ഹൂപ", "hy": "അർമേനിയൻ", "hz": "ഹെരേരൊ", "ia": "ഇന്റർലിംഗ്വ", "iba": "ഇബാൻ", "ibb": "ഇബീബിയോ", "id": "ഇന്തോനേഷ്യൻ", "ie": "ഇന്റർലിംഗ്വേ", "ig": "ഇഗ്ബോ", "ii": "ഷുവാൻയി", "ik": "ഇനുപിയാക്", "ilo": "ഇലോകോ", "inh": "ഇംഗ്വിഷ്", "io": "ഇഡോ", "is": "ഐസ്‌ലാൻഡിക്", "it": "ഇറ്റാലിയൻ", "iu": "ഇനുക്റ്റിറ്റട്ട്", "ja": "ജാപ്പനീസ്", "jbo": "ലോജ്ബാൻ", "jgo": "ഗോമ്പ", "jmc": "മചേം", "jpr": "ജൂഡിയോ-പേർഷ്യൻ", "jrb": "ജൂഡിയോ-അറബിക്", "jv": "ജാവാനീസ്", "ka": "ജോർജിയൻ", "kaa": "കര-കാൽപ്പക്", "kab": "കബൈൽ", "kac": "കാചിൻ", "kaj": "ജ്ജു", "kam": "കംബ", "kaw": "കാവി", "kbd": "കബർഡിയാൻ", "kbl": "കനെംബു", "kcg": "ട്യാപ്", "kde": "മക്കോണ്ടെ", "kea": "കബുവെർദിയാനു", "kfo": "കോറോ", "kg": "കോംഗോ", "kha": "ഘാസി", "kho": "ഘോറ്റാനേസേ", "khq": "കൊയ്റ ചീനി", "ki": "കികൂയു", "kj": "ക്വാന്യമ", "kk": "കസാഖ്", "kkj": "കാകോ", "kl": "കലാല്ലിസട്ട്", "kln": "കലെഞ്ഞിൻ", "km": "ഖമെർ", "kmb": "കിംബുണ്ടു", "kn": "കന്നഡ", "ko": "കൊറിയൻ", "koi": "കോമി-പെർമ്യാക്ക്", "kok": "കൊങ്കണി", "kos": "കൊസറേയൻ", "kpe": "കപെല്ലേ", "kr": "കനൂറി", "krc": "കരചൈ-ബാൽകർ", "krl": "കരീലിയൻ", "kru": "കുരുഖ്", "ks": "കാശ്‌മീരി", "ksb": "ഷംഭാള", "ksf": "ബാഫിയ", "ksh": "കൊളോണിയൻ", "ku": "കുർദ്ദിഷ്", "kum": "കുമൈക്", "kut": "കുതേനൈ", "kv": "കോമി", "kw": "കോർണിഷ്", "ky": "കിർഗിസ്", "la": "ലാറ്റിൻ", "lad": "ലാഡിനോ", "lag": "ലാംഗി", "lah": "ലഹ്‌ൻഡ", "lam": "ലംബ", "lb": "ലക്‌സംബർഗിഷ്", "lez": "ലഹ്ഗിയാൻ", "lg": "ഗാണ്ട", "li": "ലിംബർഗിഷ്", "lkt": "ലഗോത്ത", "ln": "ലിംഗാല", "lo": "ലാവോ", "lol": "മോങ്കോ", "lou": "ലൂസിയാന ക്രിയോൾ", "loz": "ലൊസി", "lrc": "വടക്കൻ ലൂറി", "lt": "ലിത്വാനിയൻ", "lu": "ലുബ-കറ്റംഗ", "lua": "ലൂബ-ലുലുവ", "lui": "ലൂയിസെനോ", "lun": "ലുൻഡ", "luo": "ലുവോ", "lus": "മിസോ", "luy": "ലുയിയ", "lv": "ലാറ്റ്വിയൻ", "mad": "മദുരേസേ", "maf": "മാഫ", "mag": "മഗാഹി", "mai": "മൈഥിലി", "mak": "മകാസർ", "man": "മണ്ഡിൻഗോ", "mas": "മസായ്", "mde": "മാബ", "mdf": "മോക്ഷ", "mdr": "മണ്ഡാർ", "men": "മെൻഡെ", "mer": "മേരു", "mfe": "മൊറിസിൻ", "mg": "മലഗാസി", "mga": "മദ്ധ്യ ഐറിഷ്", "mgh": "മാഖുവാ-മീത്തോ", "mgo": "മേത്താ", "mh": "മാർഷല്ലീസ്", "mi": "മവോറി", "mic": "മിക്മാക്", "min": "മിനാങ്കബൗ", "mk": "മാസിഡോണിയൻ", "ml": "മലയാളം", "mn": "മംഗോളിയൻ", "mnc": "മാൻ‌ചു", "mni": "മണിപ്പൂരി", "moh": "മോഹാക്", "mos": "മൊസ്സി", "mr": "മറാത്തി", "ms": "മലെയ്", "mt": "മാൾട്ടീസ്", "mua": "മുന്ദാംഗ്", "mus": "ക്രീക്ക്", "mwl": "മിരാൻറസേ", "mwr": "മർവാരി", "my": "ബർമീസ്", "mye": "മയീൻ", "myv": "ഏഴ്സ്യ", "mzn": "മസന്ററാനി", "na": "നൗറു", "nan": "മിൻ നാൻ ചൈനീസ്", "nap": "നെപ്പോളിറ്റാൻ", "naq": "നാമ", "nb": "നോർവീജിയൻ ബുക്‌മൽ", "nd": "നോർത്ത് ഡെബിൾ", "nds": "ലോ ജർമൻ", "nds-NL": "ലോ സാക്സൺ", "ne": "നേപ്പാളി", "new": "നേവാരി", "ng": "ഡോങ്ക", "nia": "നിയാസ്", "niu": "ന്യുവാൻ", "nl": "ഡച്ച്", "nl-BE": "ഫ്ലമിഷ്", "nmg": "ക്വാസിയോ", "nn": "നോർവീജിയൻ നൈനോർക്‌സ്", "nnh": "ഗീംബൂൺ", "no": "നോർവീജിയൻ", "nog": "നോഗൈ", "non": "പഴയ നോഴ്‌സ്", "nqo": "ഇൻകോ", "nr": "ദക്ഷിണ നെഡിബിൾ", "nso": "നോർത്തേൻ സോതോ", "nus": "നുവേർ", "nv": "നവാജോ", "nwc": "ക്ലാസിക്കൽ നേവാരി", "ny": "ന്യൻജ", "nym": "ന്യാംവേസി", "nyn": "ന്യാൻകോൾ", "nyo": "ന്യോറോ", "nzi": "സിമ", "oc": "ഓക്‌സിറ്റൻ", "oj": "ഓജിബ്വാ", "om": "ഒറോമോ", "or": "ഒഡിയ", "os": "ഒസ്സെറ്റിക്", "osa": "ഒസേജ്", "ota": "ഓട്ടോമൻ തുർക്കിഷ്", "pa": "പഞ്ചാബി", "pag": "പങ്കാസിനൻ", "pal": "പാഹ്ലവി", "pam": "പാംപൻഗ", "pap": "പാപിയാമെന്റൊ", "pau": "പലാവുൻ", "pcm": "നൈജീരിയൻ പിഡ്‌ഗിൻ", "peo": "പഴയ പേർഷ്യൻ", "phn": "ഫീനിഷ്യൻ", "pi": "പാലി", "pl": "പോളിഷ്", "pon": "പൊൻപിയൻ", "prg": "പ്രഷ്യൻ", "pro": "പഴയ പ്രൊവൻഷ്ൽ", "ps": "പഷ്‌തോ", "pt": "പോർച്ചുഗീസ്", "pt-BR": "ബ്രസീലിയൻ പോർച്ചുഗീസ്", "pt-PT": "യൂറോപ്യൻ പോർച്ചുഗീസ്", "qu": "ക്വെച്ചുവ", "quc": "ക്വിച്ചെ", "raj": "രാജസ്ഥാനി", "rap": "രാപനൂയി", "rar": "രാരോടോങ്കൻ", "rm": "റൊമാഞ്ച്", "rn": "റുണ്ടി", "ro": "റൊമാനിയൻ", "ro-MD": "മോൾഡാവിയൻ", "rof": "റോംബോ", "rom": "റൊമാനി", "root": "മൂലഭാഷ", "ru": "റഷ്യൻ", "rup": "ആരോമാനിയൻ", "rw": "കിന്യാർവാണ്ട", "rwk": "റുവാ", "sa": "സംസ്‌കൃതം", "sad": "സാൻഡവേ", "sah": "സാഖ", "sam": "സമരിയാക്കാരുടെ അരമായ", "saq": "സംബുരു", "sas": "സസാക്", "sat": "സന്താലി", "sba": "ഗംബായ്", "sbp": "സംഗു", "sc": "സർഡിനിയാൻ", "scn": "സിസിലിയൻ", "sco": "സ്കോട്സ്", "sd": "സിന്ധി", "sdh": "തെക്കൻ കുർദ്ദിഷ്", "se": "വടക്കൻ സമി", "see": "സെനേക", "seh": "സേന", "sel": "സെൽകപ്", "ses": "കൊയ്റാബൊറോ സെന്നി", "sg": "സാംഗോ", "sga": "പഴയ ഐറിഷ്", "sh": "സെർബോ-ക്രൊയേഷ്യൻ", "shi": "താച്ചലിറ്റ്", "shn": "ഷാൻ", "shu": "ചാഡിയൻ അറബി", "si": "സിംഹള", "sid": "സിഡാമോ", "sk": "സ്ലോവാക്", "sl": "സ്ലോവേനിയൻ", "sm": "സമോവൻ", "sma": "തെക്കൻ സമി", "smj": "ലൂലീ സമി", "smn": "ഇനാരി സമി", "sms": "സ്കോൾട്ട് സമി", "sn": "ഷോണ", "snk": "സോണിൻകെ", "so": "സോമാലി", "sog": "സോജിഡിയൻ", "sq": "അൽബേനിയൻ", "sr": "സെർബിയൻ", "srn": "ശ്രാനൻ ഡോങ്കോ", "srr": "സെറർ", "ss": "സ്വാറ്റി", "ssy": "സാഹോ", "st": "തെക്കൻ സോതോ", "su": "സുണ്ടാനീസ്", "suk": "സുകുമ", "sus": "സുസു", "sux": "സുമേരിയൻ", "sv": "സ്വീഡിഷ്", "sw": "സ്വാഹിലി", "sw-CD": "കോംഗോ സ്വാഹിലി", "swb": "കൊമോറിയൻ", "syc": "പുരാതന സുറിയാനിഭാഷ", "syr": "സുറിയാനി", "ta": "തമിഴ്", "te": "തെലുങ്ക്", "tem": "ടിംനേ", "teo": "ടെസോ", "ter": "ടെറേനോ", "tet": "ടെറ്റും", "tg": "താജിക്", "th": "തായ്", "ti": "ടൈഗ്രിന്യ", "tig": "ടൈഗ്രി", "tiv": "ടിവ്", "tk": "തുർക്‌മെൻ", "tkl": "ടൊക്കേലൗ", "tl": "തഗാലോഗ്", "tlh": "ക്ലിംഗോൺ", "tli": "ലിംഗ്വിറ്റ്", "tmh": "ടമഷേക്", "tn": "സ്വാന", "to": "ടോംഗൻ", "tog": "ന്യാസാ ഡോങ്ക", "tpi": "ടോക് പിസിൻ", "tr": "ടർക്കിഷ്", "trv": "തരോക്കോ", "ts": "സോംഗ", "tsi": "സിംഷ്യൻ", "tt": "ടാട്ടർ", "tum": "ടുംബുക", "tvl": "ടുവാലു", "tw": "ട്വി", "twq": "ടസവാക്ക്", "ty": "താഹിതിയൻ", "tyv": "തുവിനിയൻ", "tzm": "മധ്യ അറ്റ്‌ലസ് ടമാസൈറ്റ്", "udm": "ഉഡ്മുർട്ട്", "ug": "ഉയ്ഘുർ", "uga": "ഉഗറിട്ടിക്", "uk": "ഉക്രേനിയൻ", "umb": "ഉംബുന്ദു", "ur": "ഉറുദു", "uz": "ഉസ്‌ബെക്ക്", "vai": "വൈ", "ve": "വെന്ദ", "vi": "വിയറ്റ്നാമീസ്", "vo": "വോളാപുക്", "vot": "വോട്ടിക്", "vun": "വുൻജോ", "wa": "വല്ലൂൺ", "wae": "വാൾസർ", "wal": "വൊലൈറ്റ", "war": "വാരേയ്", "was": "വാഷൊ", "wbp": "വൂൾപിരി", "wo": "വൊളോഫ്", "wuu": "വു ചൈനീസ്", "xal": "കൽമൈക്", "xh": "ഖോസ", "xog": "സോഗോ", "yao": "യാവോ", "yap": "യെപ്പീസ്", "yav": "യാംഗ്ബെൻ", "ybb": "യംബ", "yi": "യിദ്ദിഷ്", "yo": "യൊറൂബാ", "yue": "കാന്റണീസ്", "za": "സ്വാംഗ്", "zap": "സാപ്പോടെക്", "zbl": "ബ്ലിസ്സിംബൽസ്", "zen": "സെനഗ", "zgh": "സ്റ്റാൻഡേർഡ് മൊറോക്കൻ റ്റാമസിയറ്റ്", "zh": "ചൈനീസ്", "zh-Hans": "ചൈനീസ് (ലളിതവൽക്കരിച്ചത്)", "zh-Hant": "ചൈനീസ് (പരമ്പരാഗതം)", "zu": "സുലു", "zun": "സുനി", "zza": "സാസാ"}, "scriptNames": {"Cyrl": "സിറിലിക്", "Latn": "ലാറ്റിൻ", "Arab": "അറബിക്", "Guru": "ഗുരുമുഖി", "Tfng": "തിഫിനാഗ്", "Vaii": "വൈ", "Hans": "ലളിതവൽക്കരിച്ചത്", "Hant": "പരമ്പരാഗതം"}}, "mn": {"rtl": false, "languageNames": {"aa": "афар", "ab": "абхаз", "ace": "ачин", "ada": "адангмэ", "ady": "адигэ", "af": "африкаанс", "agq": "агем", "ain": "айну", "ak": "акан", "ale": "алют", "alt": "өмнөд алтай", "am": "амхар", "an": "арагон", "anp": "ангик", "ar": "араб", "ar-001": "стандарт араб", "arn": "мапүчи", "arp": "арапаго", "as": "ассам", "asa": "асу", "ast": "астури", "av": "авар", "awa": "авадхи", "ay": "аймара", "az": "азербайжан", "ba": "башкир", "ban": "бали", "bas": "басаа", "be": "беларусь", "bem": "бемба", "bez": "бена", "bg": "болгар", "bho": "божпури", "bi": "бислам", "bin": "бини", "bla": "сиксика", "bm": "бамбара", "bn": "бенгал", "bo": "төвд", "br": "бретон", "brx": "бодо", "bs": "босни", "bug": "буги", "byn": "блин", "ca": "каталан", "ccp": "чакма", "ce": "чечень", "ceb": "себуано", "cgg": "чига", "ch": "чаморро", "chk": "чуук", "chm": "мари хэл", "cho": "чоктау", "chr": "чероки", "chy": "чэенн", "ckb": "төв курд", "co": "корсик", "crs": "сеселва креол франц", "cs": "чех", "cu": "сүмийн славян", "cv": "чуваш", "cy": "уэльс", "da": "дани", "dak": "дакота", "dar": "даргва", "dav": "тайта", "de": "герман", "de-AT": "австри-герман", "de-CH": "швейцарь-герман", "dgr": "догриб", "dje": "зарма", "dsb": "доод сорби", "dua": "дуала", "dv": "дивехи", "dyo": "жола-фони", "dz": "зонха", "dzg": "дазага", "ebu": "эмбу", "ee": "эвэ", "efi": "эфик", "eka": "экажук", "el": "грек", "en": "англи", "en-AU": "австрали-англи", "en-CA": "канад-англи", "en-GB": "британи-англи", "en-US": "америк-англи", "eo": "эсперанто", "es": "испани", "es-419": "испани хэл (Латин Америк)", "es-ES": "испани хэл (Европ)", "es-MX": "испани хэл (Мексик)", "et": "эстони", "eu": "баск", "ewo": "эвондо", "fa": "перс", "ff": "фула", "fi": "фин", "fil": "филипино", "fj": "фижи", "fo": "фарер", "fon": "фон", "fr": "франц", "fr-CA": "канад-франц", "fr-CH": "швейцари-франц", "fur": "фриулан", "fy": "баруун фриз", "ga": "ирланд", "gaa": "га", "gag": "гагуз", "gd": "шотландын гел", "gez": "гийз", "gil": "гилберт", "gl": "галего", "gn": "гуарани", "gor": "горонтало", "gsw": "швейцари-герман", "gu": "гужарати", "guz": "гузы", "gv": "манкс", "gwi": "гвичин", "ha": "хауса", "haw": "хавай", "he": "еврей", "hi": "хинди", "hil": "хилигайнон", "hmn": "хмонг", "hr": "хорват", "hsb": "дээд сорби", "ht": "Гаитийн креол", "hu": "мажар", "hup": "хупа", "hy": "армен", "hz": "хереро", "ia": "интерлингво", "iba": "ибан", "ibb": "ибибио", "id": "индонези", "ie": "нэгдмэл хэл", "ig": "игбо", "ii": "сычуань и", "ilo": "илоко", "inh": "ингуш", "io": "идо", "is": "исланд", "it": "итали", "iu": "инуктитут", "ja": "япон", "jbo": "ложбан", "jgo": "нгомба", "jmc": "мачамэ", "jv": "ява", "ka": "гүрж", "kab": "кабиле", "kac": "качин", "kaj": "жжу", "kam": "камба", "kbd": "кабардин", "kcg": "тяп", "kde": "маконде", "kea": "кабүвердиану", "kfo": "коро", "kha": "каси", "khq": "койра чини", "ki": "кикуюү", "kj": "куаньяма", "kk": "казах", "kkj": "како", "kl": "калалисут", "kln": "каленжин", "km": "кхмер", "kmb": "кимбунду", "kn": "каннада", "ko": "солонгос", "koi": "коми-пермяк", "kok": "конкани", "kpe": "кпелле", "kr": "канури", "krc": "карачай-балкар", "krl": "карель", "kru": "курук", "ks": "кашмир", "ksb": "шамбал", "ksf": "бафиа", "ksh": "кёльш", "ku": "курд", "kum": "кумук", "kv": "коми", "kw": "корн", "ky": "киргиз", "la": "латин", "lad": "ладин", "lag": "ланги", "lb": "люксембург", "lez": "лезги", "lg": "ганда", "li": "лимбург", "lkt": "лакота", "ln": "лингала", "lo": "лаос", "loz": "лози", "lrc": "хойд лури", "lt": "литва", "lu": "луба-катанга", "lua": "луба-лулуа", "lun": "лунда", "luo": "луо", "lus": "мизо", "luy": "луяа", "lv": "латви", "mad": "мадури хэл", "mag": "магахи", "mai": "май", "mak": "макасар", "mas": "масай", "mdf": "мокша", "men": "менде", "mer": "меру", "mfe": "морисен", "mg": "малагаси", "mgh": "макува-мито", "mgo": "мета", "mh": "маршалл", "mi": "маори", "mic": "микмак", "min": "минангкабау", "mk": "македон", "ml": "малаялам", "mn": "монгол", "mni": "манипури", "moh": "мохаук", "mos": "мосси", "mr": "марати", "ms": "малай", "mt": "малта", "mua": "мунданг", "mus": "крик", "mwl": "меранди", "my": "бирм", "myv": "эрзя", "mzn": "мазандерани", "na": "науру", "nap": "неаполитан", "naq": "нама", "nb": "норвегийн букмол", "nd": "хойд ндебеле", "nds": "доод герман", "nds-NL": "бага саксон", "ne": "балба", "new": "невари", "ng": "ндонга", "nia": "ниас хэл", "niu": "ниуэ", "nl": "нидерланд", "nl-BE": "фламанд", "nmg": "квазио", "nn": "норвегийн нинорск", "nnh": "нгиембүүн", "no": "норвеги", "nog": "ногаи", "nqo": "нко", "nr": "өмнөд ндебеле", "nso": "хойд сото", "nus": "нуер", "nv": "навахо", "ny": "нянжа", "nyn": "нянколе", "oc": "окситан", "om": "оромо", "or": "ория", "os": "оссетин", "pa": "панжаби", "pag": "пангасин", "pam": "пампанга", "pap": "папьяменто", "pau": "палау", "pcm": "нигерийн пиджин", "pl": "польш", "prg": "прусс", "ps": "пушту", "pt": "португал", "pt-BR": "португал хэл (Бразил)", "pt-PT": "португал хэл (Европ)", "qu": "кечуа", "quc": "киче", "rap": "рапануи", "rar": "раротонг", "rm": "романш", "rn": "рунди", "ro": "румын", "ro-MD": "молдав", "rof": "ромбо", "root": "рут", "ru": "орос", "rup": "ароманы", "rw": "киньяруанда", "rwk": "рва", "sa": "санскрит", "sad": "сандавэ", "sah": "саха", "saq": "самбүрү", "sat": "сантали", "sba": "нгамбай", "sbp": "сангү", "sc": "сардин", "scn": "сицил", "sco": "шотланд", "sd": "синдхи", "se": "хойд сами", "seh": "сена", "ses": "кёраборо сени", "sg": "санго", "sh": "хорватын серб", "shi": "тачелхит", "shn": "шань", "si": "синхала", "sk": "словак", "sl": "словени", "sm": "самоа", "sma": "өмнөд сами", "smj": "люле сами", "smn": "инари сами", "sms": "сколт сами", "sn": "шона", "snk": "сонинке", "so": "сомали", "sq": "албани", "sr": "серб", "srn": "сранан тонго", "ss": "свати", "ssy": "сахо", "st": "сесото", "su": "сундан", "suk": "сукума", "sv": "швед", "sw": "свахили", "sw-CD": "конгогийн свахили", "swb": "комори", "syr": "сири", "ta": "тамил", "te": "тэлүгү", "tem": "тимн", "teo": "тэсо", "tet": "тетум", "tg": "тажик", "th": "тай", "ti": "тигринья", "tig": "тигр", "tk": "туркмен", "tlh": "клингон", "tn": "цвана", "to": "тонга", "tpi": "ток писин", "tr": "турк", "trv": "тароко", "ts": "цонга", "tt": "татар", "tum": "тумбула", "tvl": "тувалу", "tw": "тви", "twq": "тасавак", "ty": "таити", "tyv": "тува", "tzm": "Төв Атласын тамазигхт", "udm": "удмурт", "ug": "уйгур", "uk": "украин", "umb": "умбунду", "ur": "урду", "uz": "узбек", "vai": "вай", "ve": "венда", "vi": "вьетнам", "vo": "волапюк", "vun": "вунжо", "wa": "уоллун", "wae": "уолсэр", "wal": "уоллайтта", "war": "варай", "wo": "волоф", "xal": "халимаг", "xh": "хоса", "xog": "сога", "yav": "янгбен", "ybb": "емба", "yi": "иддиш", "yo": "ёруба", "yue": "кантон", "zgh": "стандарт тамазайт (Морокко)", "zh": "хятад", "zh-Hans": "хялбаршуулсан мандарин хятад", "zh-Hant": "уламжлалт мандарин хятад", "zu": "зулу", "zun": "зуни", "zza": "заза"}, "scriptNames": {"Cyrl": "кирилл", "Latn": "латин", "Arab": "араб", "Guru": "гүрмүх", "Hans": "хялбаршуулсан", "Hant": "уламжлалт"}}, "ms": {"rtl": false, "languageNames": {"aa": "Afar", "ab": "Abkhazia", "ace": "Aceh", "ach": "Akoli", "ada": "Adangme", "ady": "Adyghe", "ae": "Avestan", "aeb": "Arab Tunisia", "af": "Afrikaans", "agq": "Aghem", "ain": "Ainu", "ak": "Akan", "ale": "Aleut", "alt": "Altai Selatan", "am": "Amharic", "an": "Aragon", "anp": "Angika", "ar": "Arab", "ar-001": "Arab Standard Moden", "arn": "Mapuche", "arp": "Arapaho", "arq": "Arab Algeria", "ars": "Arab Najdi", "ary": "Arab Maghribi", "arz": "Arab Mesir", "as": "Assam", "asa": "Asu", "ast": "Asturia", "av": "Avaric", "awa": "Awadhi", "ay": "Aymara", "az": "Azerbaijan", "ba": "Bashkir", "bal": "Baluchi", "ban": "Bali", "bas": "Basaa", "bax": "Bamun", "bbj": "Ghomala", "be": "Belarus", "bej": "Beja", "bem": "Bemba", "bez": "Bena", "bfd": "Bafut", "bg": "Bulgaria", "bgn": "Balochi Barat", "bho": "Bhojpuri", "bi": "Bislama", "bin": "Bini", "bkm": "Kom", "bla": "Siksika", "bm": "Bambara", "bn": "Benggala", "bo": "Tibet", "bpy": "Bishnupriya", "br": "Breton", "brh": "Brahui", "brx": "Bodo", "bs": "Bosnia", "bss": "Akoose", "bua": "Buriat", "bug": "Bugis", "bum": "Bulu", "byn": "Blin", "byv": "Medumba", "ca": "Catalonia", "cay": "Cayuga", "ccp": "Chakma", "ce": "Chechen", "ceb": "Cebuano", "cgg": "Chiga", "ch": "Chamorro", "chk": "Chukese", "chm": "Mari", "cho": "Choctaw", "chr": "Cherokee", "chy": "Cheyenne", "ckb": "Kurdi Sorani", "co": "Corsica", "cop": "Coptic", "crh": "Turki Krimea", "crs": "Perancis Seselwa Creole", "cs": "Czech", "cu": "Slavik Gereja", "cv": "Chuvash", "cy": "Wales", "da": "Denmark", "dak": "Dakota", "dar": "Dargwa", "dav": "Taita", "de": "Jerman", "de-AT": "Jerman Austria", "de-CH": "Jerman Halus Switzerland", "dgr": "Dogrib", "dje": "Zarma", "doi": "Dogri", "dsb": "Sorbian Rendah", "dua": "Duala", "dv": "Divehi", "dyo": "Jola-Fonyi", "dz": "Dzongkha", "dzg": "Dazaga", "ebu": "Embu", "ee": "Ewe", "efi": "Efik", "eka": "Ekajuk", "el": "Greek", "en": "Inggeris", "en-AU": "Inggeris Australia", "en-CA": "Inggeris Kanada", "en-GB": "Inggeris British", "en-US": "Inggeris AS", "eo": "Esperanto", "es": "Sepanyol", "es-419": "Sepanyol Amerika Latin", "es-ES": "Sepanyol Eropah", "es-MX": "Sepanyol Mexico", "et": "Estonia", "eu": "Basque", "ewo": "Ewondo", "fa": "Parsi", "ff": "Fulah", "fi": "Finland", "fil": "Filipina", "fj": "Fiji", "fo": "Faroe", "fon": "Fon", "fr": "Perancis", "fr-CA": "Perancis Kanada", "fr-CH": "Perancis Switzerland", "frc": "Perancis Cajun", "fur": "Friulian", "fy": "Frisian Barat", "ga": "Ireland", "gaa": "Ga", "gag": "Gagauz", "gan": "Cina Gan", "gba": "Gbaya", "gbz": "Zoroastrian Dari", "gd": "Scots Gaelic", "gez": "Geez", "gil": "Kiribati", "gl": "Galicia", "glk": "Gilaki", "gn": "Guarani", "gor": "Gorontalo", "grc": "Greek Purba", "gsw": "Jerman Switzerland", "gu": "Gujerat", "guz": "Gusii", "gv": "Manx", "gwi": "Gwichʼin", "ha": "Hausa", "hak": "Cina Hakka", "haw": "Hawaii", "he": "Ibrani", "hi": "Hindi", "hil": "Hiligaynon", "hmn": "Hmong", "hr": "Croatia", "hsb": "Sorbian Atas", "hsn": "Cina Xiang", "ht": "Haiti", "hu": "Hungary", "hup": "Hupa", "hy": "Armenia", "hz": "Herero", "ia": "Interlingua", "iba": "Iban", "ibb": "Ibibio", "id": "Indonesia", "ie": "Interlingue", "ig": "Igbo", "ii": "Sichuan Yi", "ilo": "Iloko", "inh": "Ingush", "io": "Ido", "is": "Iceland", "it": "Itali", "iu": "Inuktitut", "ja": "Jepun", "jbo": "Lojban", "jgo": "Ngomba", "jmc": "Machame", "jv": "Jawa", "ka": "Georgia", "kab": "Kabyle", "kac": "Kachin", "kaj": "Jju", "kam": "Kamba", "kbd": "Kabardia", "kbl": "Kanembu", "kcg": "Tyap", "kde": "Makonde", "kea": "Kabuverdianu", "kfo": "Koro", "kg": "Kongo", "kha": "Khasi", "khq": "Koyra Chiini", "khw": "Khowar", "ki": "Kikuya", "kj": "Kuanyama", "kk": "Kazakhstan", "kkj": "Kako", "kl": "Kalaallisut", "kln": "Kalenjin", "km": "Khmer", "kmb": "Kimbundu", "kn": "Kannada", "ko": "Korea", "koi": "Komi-Permyak", "kok": "Konkani", "kpe": "Kpelle", "kr": "Kanuri", "krc": "Karachay-Balkar", "krl": "Karelian", "kru": "Kurukh", "ks": "Kashmir", "ksb": "Shambala", "ksf": "Bafia", "ksh": "Colognian", "ku": "Kurdish", "kum": "Kumyk", "kv": "Komi", "kw": "Cornish", "ky": "Kirghiz", "la": "Latin", "lad": "Ladino", "lag": "Langi", "lah": "Lahnda", "lb": "Luxembourg", "lez": "Lezghian", "lg": "Ganda", "li": "Limburgish", "lkt": "Lakota", "ln": "Lingala", "lo": "Laos", "lou": "Kreol Louisiana", "loz": "Lozi", "lrc": "Luri Utara", "lt": "Lithuania", "lu": "Luba-Katanga", "lua": "Luba-Lulua", "lun": "Lunda", "luo": "Luo", "lus": "Mizo", "luy": "Luyia", "lv": "Latvia", "mad": "Madura", "maf": "Mafa", "mag": "Magahi", "mai": "Maithili", "mak": "Makasar", "mas": "Masai", "mde": "Maba", "mdf": "Moksha", "men": "Mende", "mer": "Meru", "mfe": "Morisyen", "mg": "Malagasy", "mgh": "Makhuwa-Meetto", "mgo": "Meta’", "mh": "Marshall", "mi": "Maori", "mic": "Micmac", "min": "Minangkabau", "mk": "Macedonia", "ml": "Malayalam", "mn": "Mongolia", "mni": "Manipuri", "moh": "Mohawk", "mos": "Mossi", "mr": "Marathi", "ms": "Melayu", "mt": "Malta", "mua": "Mundang", "mus": "Creek", "mwl": "Mirandese", "my": "Burma", "mye": "Myene", "myv": "Erzya", "mzn": "Mazanderani", "na": "Nauru", "nan": "Cina Min Nan", "nap": "Neapolitan", "naq": "Nama", "nb": "Bokmål Norway", "nd": "Ndebele Utara", "nds": "Jerman Rendah", "nds-NL": "Saxon Rendah", "ne": "Nepal", "new": "Newari", "ng": "Ndonga", "nia": "Nias", "niu": "Niu", "nl": "Belanda", "nl-BE": "Flemish", "nmg": "Kwasio", "nn": "Nynorsk Norway", "nnh": "Ngiemboon", "no": "Norway", "nog": "Nogai", "nqo": "N’ko", "nr": "Ndebele Selatan", "nso": "Sotho Utara", "nus": "Nuer", "nv": "Navajo", "ny": "Nyanja", "nyn": "Nyankole", "oc": "Occitania", "om": "Oromo", "or": "Odia", "os": "Ossete", "pa": "Punjabi", "pag": "Pangasinan", "pam": "Pampanga", "pap": "Papiamento", "pau": "Palauan", "pcm": "Nigerian Pidgin", "pl": "Poland", "prg": "Prusia", "ps": "Pashto", "pt": "Portugis", "pt-BR": "Portugis Brazil", "pt-PT": "Portugis Eropah", "qu": "Quechua", "quc": "Kʼicheʼ", "rap": "Rapanui", "rar": "Rarotonga", "rm": "Romansh", "rn": "Rundi", "ro": "Romania", "ro-MD": "Moldavia", "rof": "Rombo", "root": "Root", "ru": "Rusia", "rup": "Aromanian", "rw": "Kinyarwanda", "rwk": "Rwa", "sa": "Sanskrit", "sad": "Sandawe", "sah": "Sakha", "saq": "Samburu", "sat": "Santali", "sba": "Ngambay", "sbp": "Sangu", "sc": "Sardinia", "scn": "Sicili", "sco": "Scots", "sd": "Sindhi", "sdh": "Kurdish Selatan", "se": "Sami Utara", "see": "Seneca", "seh": "Sena", "ses": "Koyraboro Senni", "sg": "Sango", "sh": "SerboCroatia", "shi": "Tachelhit", "shn": "Shan", "shu": "Arab Chadian", "si": "Sinhala", "sk": "Slovak", "sl": "Slovenia", "sm": "Samoa", "sma": "Sami Selatan", "smj": "Lule Sami", "smn": "Inari Sami", "sms": "Skolt Sami", "sn": "Shona", "snk": "Soninke", "so": "Somali", "sq": "Albania", "sr": "Serbia", "srn": "Sranan Tongo", "ss": "Swati", "ssy": "Saho", "st": "Sotho Selatan", "su": "Sunda", "suk": "Sukuma", "sv": "Sweden", "sw": "Swahili", "sw-CD": "Congo Swahili", "swb": "Comoria", "syr": "Syriac", "ta": "Tamil", "te": "Telugu", "tem": "Timne", "teo": "Teso", "tet": "Tetum", "tg": "Tajik", "th": "Thai", "ti": "Tigrinya", "tig": "Tigre", "tk": "Turkmen", "tlh": "Klingon", "tly": "Talysh", "tn": "Tswana", "to": "Tonga", "tpi": "Tok Pisin", "tr": "Turki", "trv": "Taroko", "ts": "Tsonga", "tt": "Tatar", "tum": "Tumbuka", "tvl": "Tuvalu", "tw": "Twi", "twq": "Tasawaq", "ty": "Tahiti", "tyv": "Tuvinian", "tzm": "Tamazight Atlas Tengah", "udm": "Udmurt", "ug": "Uyghur", "uk": "Ukraine", "umb": "Umbundu", "ur": "Urdu", "uz": "Uzbekistan", "vai": "Vai", "ve": "Venda", "vi": "Vietnam", "vo": "Volapük", "vun": "Vunjo", "wa": "Walloon", "wae": "Walser", "wal": "Wolaytta", "war": "Waray", "wbp": "Warlpiri", "wo": "Wolof", "wuu": "Cina Wu", "xal": "Kalmyk", "xh": "Xhosa", "xog": "Soga", "yav": "Yangben", "ybb": "Yemba", "yi": "Yiddish", "yo": "Yoruba", "yue": "Kantonis", "zgh": "Tamazight Maghribi Standard", "zh": "Cina", "zh-Hans": "Cina Mandarin Ringkas", "zh-Hant": "Cina Mandarin Tradisional", "zu": "Zulu", "zun": "Zuni", "zza": "Zaza"}, "scriptNames": {"Cyrl": "Cyril", "Latn": "Latin", "Guru": "Gurmukhi", "Tfng": "Tifinagh", "Vaii": "Vai", "Hans": "Ringkas", "Hant": "Tradisional"}}, + "my": {"rtl": false, "languageNames": {"aa": "အာဖာ", "ab": "အဘ်ခါဇီရာ", "ace": "အာချေး", "ada": "ဒန်မဲ", "ady": "အဒိုင်ဂီ", "af": "တောင်အာဖရိက", "agq": "အာဂ်ဟိန်း", "ain": "အိန်နု", "ak": "အာကန်", "ale": "အာလီယု", "alt": "တောင် အာလ်တိုင်း", "am": "အမ်ဟာရစ်ခ်", "an": "အာရာဂွန်", "ang": "အင်ဂလို ဆက္ကစွန်", "anp": "အန်ဂီကာ", "ar": "အာရဗီ", "ar-001": "ခေတ်သစ် ရှေ့ဆောင် အာရဗီ", "arn": "မာပုချီ", "arp": "အာရာပါဟို", "as": "အာသံ", "asa": "အာစု", "ast": "အက်စတူရီယန်း", "av": "အာဗာရစ်ခ်", "awa": "အာဝါဒီ", "ay": "အိုင်မာရ", "az": "အဇာဘိုင်ဂျန်", "ba": "ဘက်ရှ်ကာ", "ban": "ဘာလီ", "bas": "ဘာဆာ", "be": "ဘီလာရုစ်", "bem": "ဘိန်ဘာ", "bez": "ဘီနာ", "bg": "ဘူလ်ဂေးရီးယား", "bgn": "အနောက် ဘဲလိုချီ", "bho": "ဘို့ဂျ်ပူရီ", "bi": "ဘစ်စ်လာမာ", "bin": "ဘီနီ", "bla": "စစ္စီကာ", "bm": "ဘန်ဘာရာ", "bn": "ဘင်္ဂါလီ", "bo": "တိဘက်", "br": "ဘရီတွန်", "brx": "ဗိုဒို", "bs": "ဘော့စ်နီးယား", "bug": "ဘူဂစ်စ်", "byn": "ဘလင်", "ca": "ကတ်တလန်", "ccp": "ချတ်ခ်မာ", "ce": "ချက်ချန်း", "ceb": "စီဗူအာနို", "cgg": "ချီဂါ", "ch": "ချမိုရို", "chk": "ချူကီးစ်", "chm": "မာရီ", "cho": "ချော့တို", "chr": "ချာရိုကီ", "chy": "ချေယန်း", "ckb": "ဆိုရာနီ", "co": "ခိုစီကန်", "cr": "ခရီး", "crs": "ခရီအိုလီ", "cs": "ချက်", "cu": "ချပ်ချ် စလာဗစ်", "cv": "ချူဗက်ရှ်", "cy": "ဝေလ", "da": "ဒိန်းမတ်", "dak": "ဒါကိုတာ", "dar": "ဒါဂ်ဝါ", "dav": "တိုင်တာ", "de": "ဂျာမန်", "de-AT": "ဩစတြီးယား ဂျာမန်", "de-CH": "အလီမဲန်နစ် ဂျာမန်", "del": "ဒယ်လာဝဲလ်", "dgr": "ဒေါ့ဂ်ရစ်ဘ်", "dje": "ဇာမာ", "dsb": "အနိမ့် ဆိုဘီယန်း", "dua": "ဒူအလာ", "dum": "အလယ်ပိုင်း ဒတ်ချ်", "dv": "ဒီဗာဟီ", "dyo": "ဂျိုလာ-ဖွန်ရီ", "dz": "ဒဇွန်ကာ", "dzg": "ဒဇာဂါ", "ebu": "အမ်ဘူ", "ee": "အီဝီ", "efi": "အာဖိခ်", "egy": "ရှေးဟောင်း အီဂျစ်", "eka": "အီကာဂျုခ်", "el": "ဂရိ", "en": "အင်္ဂလိပ်", "en-AU": "ဩစတြေးလျှ အင်္ဂလိပ်", "en-CA": "ကနေဒါ အင်္ဂလိပ်", "en-GB": "ဗြိတိသျှ အင်္ဂလိပ်", "en-US": "အမေရိကန် အင်္ဂလိပ်", "enm": "အလယ်ပိုင်း အင်္ဂလိပ်", "eo": "အက်စ်ပရန်တို", "es": "စပိန်", "es-419": "စပိန် (လက်တင်အမေရိက)", "es-ES": "စပိန် (ဥရောပ)", "es-MX": "စပိန် (မက္ကဆီကို)", "et": "အက်စ်တိုးနီးယား", "eu": "ဘာစ်ခ်", "ewo": "အီဝန်ဒို", "fa": "ပါရှန်", "ff": "ဖူလာ", "fi": "ဖင်လန်", "fil": "ဖိလစ်ပိုင်", "fj": "ဖီဂျီ", "fo": "ဖာရို", "fon": "ဖော်န်", "fr": "ပြင်သစ်", "fr-CA": "ကနေဒါ ပြင်သစ်", "fr-CH": "ဆွစ် ပြင်သစ်", "frm": "အလယ်ပိုင်း ပြင်သစ်", "fro": "ဖရန်စီစ်", "frr": "မြောက် ဖရီစီရန်", "frs": "အရှေ့ ဖရီစီရန်", "fur": "ဖရူလီယန်း", "fy": "အနောက် ဖရီစီရန်", "ga": "အိုင်းရစ်ရှ်", "gaa": "ဂါ", "gag": "ဂါဂုဇ်", "gd": "စကော့တစ်ရှ် ဂေးလစ်ခ်", "gez": "ဂီးဇ်", "gil": "ကာရီဗာတီ", "gl": "ဂါလီစီယာ", "gmh": "အလယ်ပိုင်း အမြင့် ဂျာမန်", "gn": "ဂူအာရာနီ", "gor": "ဂိုရိုတာလို", "grc": "ရှေးဟောင်း ဂရိ", "gsw": "ဆွစ် ဂျာမန်", "gu": "ဂူဂျာရသီ", "guz": "ဂူစီး", "gv": "မန်းဇ်", "gwi": "ဂွစ်ချင်", "ha": "ဟာဥစာ", "haw": "ဟာဝိုင်ယီ", "he": "ဟီးဘရူး", "hi": "ဟိန်ဒူ", "hil": "ဟီလီဂေနွန်", "hmn": "မုံ", "hr": "ခရိုအေးရှား", "hsb": "ဆက္ကဆိုနီ", "ht": "ဟေတီ", "hu": "ဟန်ဂေရီ", "hup": "ဟူပါ", "hy": "အာမေးနီးယား", "hz": "ဟီရဲရို", "ia": "အင်တာလင်ဂွါ", "iba": "အီဗန်", "ibb": "အီဘီဘီယို", "id": "အင်ဒိုနီးရှား", "ig": "အစ္ဂဘို", "ii": "စီချွမ် ရီ", "ilo": "အီလိုကို", "inh": "အင်ဂုရှ်", "io": "အီဒို", "is": "အိုက်စ်လန်", "it": "အီတလီ", "iu": "အီနုခ်တီတု", "ja": "ဂျပန်", "jbo": "လိုဂျ်ဘန်", "jgo": "ဂွမ်ဘာ", "jmc": "မချာမီ", "jpr": "ဂျူဒီယို-ပါရှန်", "jrb": "ဂျူဒီယို-အာရဗီ", "jv": "ဂျာဗား", "ka": "ဂျော်ဂျီယာ", "kab": "ကဘိုင်လ်", "kac": "ကချင်", "kaj": "ဂျူအူ", "kam": "ကမ်ဘာ", "kbd": "ကဘာဒင်", "kcg": "တိုင်အပ်", "kde": "မာခွန်ဒီ", "kea": "ကဘူဗာဒီအာနူ", "kfo": "ကိုရို", "kg": "ကွန်ဂို", "kha": "ခါစီ", "khq": "ကိုရာ ချီအီနီ", "ki": "ကီကူယူ", "kj": "ကွန်းယာမာ", "kk": "ကာဇာချ", "kkj": "ကကို", "kl": "ကလာအ်လီဆပ်", "kln": "ကလန်ဂျင်", "km": "ခမာ", "kmb": "ကင်ဘွန်ဒူ", "kn": "ကန်နာဒါ", "ko": "ကိုရီးယား", "koi": "ကိုမီ-ပါမြက်", "kok": "ကွန်ကနီ", "kpe": "ကပ်ပဲလ်", "kr": "ကနူရီ", "krc": "ကရာချေး-ဘာကာ", "krl": "ကာရီလီယန်", "kru": "ကူရုပ်ခ်", "ks": "ကက်ရှ်မီးယား", "ksb": "ရှန်ဘာလာ", "ksf": "ဘာဖီအာ", "ksh": "ကိုလိုနီယန်း", "ku": "ကဒ်", "kum": "ကွမ်မိုက်", "kv": "ကိုမီ", "kw": "ခိုနီရှ်", "ky": "ကာဂျစ်", "la": "လက်တင်", "lad": "လာဒီနို", "lag": "လန်ဂီ", "lb": "လူဇင်ဘတ်", "lez": "လက်ဇ်ဂီးယား", "lg": "ဂန်ဒါ", "li": "လင်ဘာဂစ်ရှ်", "lkt": "လာကိုတာ", "ln": "လင်ဂါလာ", "lo": "လာအို", "loz": "လိုဇီ", "lrc": "မြောက်လူရီ", "lt": "လစ်သူဝေးနီးယား", "lu": "လူဘာ-ကတန်ဂါ", "lua": "လူဘာ-လူလူအာ", "lun": "လွန်ဒါ", "luo": "လူအို", "lus": "မီဇို", "luy": "လူရီအာ", "lv": "လတ်ဗီးယား", "mad": "မဒူရာ", "mag": "မဂါဟီ", "mai": "မိုင်သီလီ", "mak": "မကာဆာ", "mas": "မာဆိုင်", "mdf": "မို့ခ်ရှာ", "men": "မန်ဒဲ", "mer": "မီရု", "mfe": "မောရစ်ရှ", "mg": "မာလဂက်စီ", "mga": "အလယ်ပိုင်း အိုင်းရစ်ရှ်", "mgh": "မာခူဝါ-မီအီတို", "mgo": "မီတာ", "mh": "မာရှယ်လိဇ်", "mi": "မာအိုရီ", "mic": "မစ်ခ်မက်ခ်", "min": "စူကူမီနန်", "mk": "မက်ဆီဒိုးနီးယား", "ml": "မလေယာလမ်", "mn": "မွန်ဂိုလီးယား", "mnc": "မန်ချူး", "mni": "မနိပူရ", "moh": "မိုဟော့ခ်", "mos": "မိုစီ", "mr": "မာရသီ", "ms": "မလေး", "mt": "မော်လ်တာ", "mua": "မွန်ဒန်း", "mus": "ခရိချ", "mwl": "မီရန်ဒီးဇ်", "my": "မြန်မာ", "myv": "အီဇယာ", "mzn": "မာဇန်ဒါရန်နီ", "na": "နော်ရူး", "nap": "နပိုလီတန်", "naq": "နာမာ", "nb": "နော်ဝေ ဘွတ်ခ်မော်လ်", "nd": "မြောက် အွန်န်ဒီဘီလီ", "nds": "အနိမ့် ဂျာမန်", "nds-NL": "ဂျာမန် (နယ်သာလန်)", "ne": "နီပေါ", "new": "နီဝါရီ", "ng": "အွန်ဒွန်ဂါ", "nia": "နီးရပ်စ်", "niu": "နူအဲယန်း", "nl": "ဒတ်ခ်ျ", "nl-BE": "ဖလီမစ်ရှ်", "nmg": "ကွာစီအို", "nn": "နော်ဝေ နီးနောစ်", "nnh": "အွန်ရဲဘွန်း", "no": "နော်ဝေး", "nog": "နိုဂိုင်", "nqo": "အွန်ကို", "nr": "တောင် အွန်န်ဘီလီ", "nso": "မြောက် ဆိုသို", "nus": "နူအာ", "nv": "နာဗာဟို", "ny": "နရန်ဂျာ", "nyn": "နရန်ကိုလီ", "oc": "အိုစီတန်", "om": "အိုရိုမို", "or": "အိုရီရာ", "os": "အိုဆဲတစ်ခ်", "pa": "ပန်ချာပီ", "pag": "ပန်ဂါစီနန်", "pam": "ပမ်ပန်ညာ", "pap": "ပါပီမင်တို", "pau": "ပလာအို", "pcm": "နိုင်ဂျီးရီးယား ပစ်ဂျင်", "peo": "ပါရှန် အဟောင်း", "pi": "ပါဠိ", "pl": "ပိုလန်", "prg": "ပရူရှန်", "ps": "ပက်ရှ်တွန်း", "pt": "ပေါ်တူဂီ", "pt-BR": "ဘရာဇီး ပေါ်တူဂီ", "pt-PT": "ဥရောပ ပေါ်တူဂီ", "qu": "ခီချူဝါအိုဝါ", "quc": "ကီခ်အီချီ", "rap": "ရပန်နူအီ", "rar": "ရရိုတွန်ဂန်", "rm": "ရောမ", "rn": "ရွန်ဒီ", "ro": "ရိုမေနီယား", "ro-MD": "မော်လဒိုဗာ", "rof": "ရွမ်ဘို", "root": "မူလရင်းမြစ်", "ru": "ရုရှ", "rup": "အာရိုမန်းနီးယန်း", "rw": "ကင်ရာဝန်ဒါ", "rwk": "ရူဝမ်", "sa": "သင်္သကရိုက်", "sad": "ဆန်ဒါဝီ", "sah": "ဆခါ", "saq": "ဆမ်ဘူရူ", "sat": "ဆန်တာလီ", "sba": "အွန်ဂမ်းဘေး", "sbp": "ဆန်ဂု", "sc": "ဆာဒီနီးယား", "scn": "စစ္စလီ", "sco": "စကော့တ်", "sd": "စင်ဒီ", "se": "မြောက် ဆာမိ", "seh": "စီနာ", "ses": "ကိုရာဘိုရို ဆမ်နီ", "sg": "ဆန်ဂို", "sga": "အိုင်းရစ် ဟောင်း", "shi": "တာချယ်လ်ဟစ်", "shn": "ရှမ်း", "si": "စင်ဟာလာ", "sk": "ဆလိုဗက်", "sl": "ဆလိုဗေးနီးယား", "sm": "ဆမိုအာ", "sma": "တောင် ဆာမိ", "smj": "လူလီ ဆာမိ", "smn": "အီနာရီ ဆာမိ", "sms": "စခိုးလ် ဆာမိ", "sn": "ရှိုနာ", "snk": "ဆိုနင်ကေး", "so": "ဆိုမာလီ", "sq": "အယ်လ်ဘေးနီးယား", "sr": "ဆားဘီးယား", "srn": "ဆရာနန် တွန်ဂို", "ss": "ဆွာဇီလန်", "ssy": "ဆာဟို", "st": "တောင်ပိုင်း ဆိုသို", "su": "ဆူဒန်", "suk": "ဆူကူမာ", "sv": "ဆွီဒင်", "sw": "ဆွာဟီလီ", "sw-CD": "ကွန်ဂို ဆွာဟီလီ", "swb": "ကိုမိုရီးယန်း", "syr": "ဆီးရီးယား", "ta": "တမီးလ်", "te": "တီလီဂူ", "tem": "တင်မ်နဲ", "teo": "တီဆို", "tet": "တီတွမ်", "tg": "တာဂျစ်", "th": "ထိုင်း", "ti": "တီဂ်ရင်ယာ", "tig": "တီဂရီ", "tk": "တာ့ခ်မင်နစ္စတန်", "tlh": "ကလင်ဂွန်", "tn": "တီဆဝါနာ", "to": "တွန်ဂါ", "tpi": "တော့ခ် ပိစင်", "tr": "တူရကီ", "trv": "တရိုကို", "ts": "ဆွန်ဂါ", "tt": "တာတာ", "tum": "တမ်ဘူကာ", "tvl": "တူဗာလူ", "twq": "တာဆာဝါချ", "ty": "တဟီတီ", "tyv": "တူဗန်", "tzm": "အလယ်အာ့တလာစ် တာမာဇိုက်", "udm": "အူမူရတ်", "ug": "ဝီဂါ", "uk": "ယူကရိန်း", "umb": "အူဘန်ဒူ", "ur": "အူရ်ဒူ", "uz": "ဥဇဘတ်", "vai": "ဗိုင်", "ve": "ဗင်န်ဒါ", "vi": "ဗီယက်နမ်", "vo": "ဗိုလာပိုက်", "vun": "ဗွန်ဂျို", "wa": "ဝါလူးန်", "wae": "ဝေါလ်ဆာ", "wal": "ဝိုလက်တာ", "war": "ဝါရေး", "wbp": "ဝေါလ်ပီရီ", "wo": "ဝူလိုဖ်", "xal": "ကာလ်မိုက်", "xh": "ဇိုစာ", "xog": "ဆိုဂါ", "yav": "ရန်ဘဲန်", "ybb": "ရမ်ဘာ", "yi": "ဂျူး", "yo": "ယိုရူဘာ", "yue": "ကွမ်တုံ", "zgh": "မိုရိုကို တမဇိုက်", "zh": "တရုတ်", "zh-Hans": "ပြည်ကြီးတရုတ် (ရိုးရှင်း)", "zh-Hant": "ပြည်ကြီးတရုတ် (ရိုးရာ)", "zu": "ဇူးလူး", "zun": "ဇူနီ", "zza": "ဇာဇာ"}, "scriptNames": {"Cyrl": "စစ်ရိလစ်", "Latn": "လက်တင်", "Arab": "အာရေဗျ", "Guru": "ဂူရူ", "Hans": "ရိုးရှင်း", "Hant": "ရိုးရာ"}}, "ne": {"rtl": false, "languageNames": {"aa": "अफार", "ab": "अब्खाजियाली", "ace": "अचाइनिज", "ach": "अकोली", "ada": "अदाङमे", "ady": "अदिघे", "ae": "अवेस्तान", "af": "अफ्रिकान्स", "afh": "अफ्रिहिली", "agq": "आघेम", "ain": "अइनु", "ak": "आकान", "akk": "अक्कादियाली", "akz": "अलाबामा", "ale": "अलेउट", "aln": "घेग अल्बानियाली", "alt": "दक्षिणी आल्टाइ", "am": "अम्हारिक", "an": "अरागोनी", "ang": "पुरातन अङ्ग्रेजी", "anp": "अङ्गिका", "ar": "अरबी", "ar-001": "आधुनिक मानक अरबी", "arc": "अरामाइक", "arn": "मापुचे", "aro": "अराओना", "arp": "अरापाहो", "arq": "अल्जेरियाली अरबी", "arw": "अरावाक", "ary": "मोरोक्कोली अरबी", "arz": "इजिप्ट अरबी", "as": "आसामी", "asa": "आसु", "ase": "अमेरिकी साङ्केतिक भाषा", "ast": "अस्टुरियाली", "av": "अवारिक", "avk": "कोटावा", "awa": "अवधी", "ay": "ऐमारा", "az": "अजरबैजानी", "ba": "बास्किर", "bal": "बालुची", "ban": "बाली", "bar": "बाभारियाली", "bas": "बासा", "bax": "बामुन", "bbc": "बाताक तोबा", "bbj": "घोमाला", "be": "बेलारुसी", "bej": "बेजा", "bem": "बेम्बा", "bew": "बेटावी", "bez": "बेना", "bfd": "बाफुट", "bfq": "बडागा", "bg": "बुल्गेरियाली", "bgn": "पश्चिम बालोची", "bho": "भोजपुरी", "bi": "बिस्लाम", "bik": "बिकोल", "bin": "बिनी", "bjn": "बन्जार", "bkm": "कोम", "bla": "सिक्सिका", "bm": "बाम्बारा", "bn": "बंगाली", "bo": "तिब्बती", "bpy": "विष्णुप्रिया", "bqi": "बाख्तिआरी", "br": "ब्रेटन", "bra": "ब्रज", "brh": "ब्राहुइ", "brx": "बोडो", "bs": "बोस्नियाली", "bss": "अकुज", "bua": "बुरिआत", "bug": "बुगिनियाली", "bum": "बुलु", "byn": "ब्लिन", "byv": "मेडुम्बा", "ca": "क्याटालन", "cad": "काड्डो", "car": "क्यारिब", "cay": "कायुगा", "cch": "अट्साम", "ccp": "चाक्मा", "ce": "चेचेन", "ceb": "सेबुआनो", "cgg": "चिगा", "ch": "चामोर्रो", "chb": "चिब्चा", "chg": "चागाटाई", "chk": "चुकेसे", "chm": "मारी", "chn": "चिनुक जार्गन", "cho": "चोक्टाव", "chp": "चिपेव्यान", "chr": "चेरोकी", "chy": "चेयेन्ने", "ckb": "मध्यवर्ती कुर्दिस", "co": "कोर्सिकन", "cop": "कोप्टिक", "cps": "कापिज्नोन", "cr": "क्री", "crh": "क्रिमियाली तुर्क", "crs": "सेसेल्वा क्रिओल फ्रान्सेली", "cs": "चेक", "csb": "कासुवियन", "cu": "चर्च स्लाभिक", "cv": "चुभास", "cy": "वेल्श", "da": "डेनिस", "dak": "डाकोटा", "dar": "दार्ग्वा", "dav": "ताइता", "de": "जर्मन", "de-AT": "अस्ट्रिएन जर्मन", "de-CH": "स्वीस हाई जर्मन", "del": "देलावर", "dgr": "दोग्रिब", "din": "दिन्का", "dje": "जर्मा", "doi": "डोगरी", "dsb": "तल्लो सोर्बियन", "dtp": "केन्द्रीय दुसुन", "dua": "दुवाला", "dum": "मध्य डच", "dv": "दिबेही", "dyo": "जोला-फोनिल", "dyu": "द्युला", "dz": "जोङ्खा", "dzg": "दाजागा", "ebu": "एम्बु", "ee": "इवी", "efi": "एफिक", "egl": "एमिलियाली", "egy": "पुरातन इजिप्टी", "eka": "एकाजुक", "el": "ग्रीक", "elx": "एलामाइट", "en": "अङ्ग्रेजी", "en-AU": "अस्ट्रेलियाली अङ्ग्रेजी", "en-CA": "क्यानाडेली अङ्ग्रेजी", "en-GB": "बेलायती अङ्ग्रेजी", "en-US": "अमेरिकी अङ्ग्रेजी", "enm": "मध्य अङ्ग्रेजी", "eo": "एस्पेरान्तो", "es": "स्पेनी", "es-419": "ल्याटिन अमेरिकी स्पेनी", "es-ES": "युरोपेली स्पेनी", "es-MX": "मेक्सिकन स्पेनी", "esu": "केन्द्रीय युपिक", "et": "इस्टोनियन", "eu": "बास्क", "ewo": "इवोन्डो", "ext": "एक्सट्रेमादुराली", "fa": "फारसी", "fan": "फाङ", "fat": "फान्टी", "ff": "फुलाह", "fi": "फिनिस", "fil": "फिलिपिनी", "fj": "फिजियन", "fo": "फारोज", "fon": "फोन", "fr": "फ्रान्सेली", "fr-CA": "क्यानेडाली फ्रान्सेली", "fr-CH": "स्विस फ्रेन्च", "frc": "काहुन फ्रान्सेली", "frm": "मध्य फ्रान्सेली", "fro": "पुरातन फ्रान्सेली", "frp": "अर्पितान", "frr": "उत्तरी फ्रिजी", "frs": "पूर्वी फ्रिसियाली", "fur": "फ्रिउलियाली", "fy": "पश्चिमी फ्रिसियन", "ga": "आइरिस", "gaa": "गा", "gag": "गगाउज", "gan": "गान चिनियाँ", "gay": "गायो", "gba": "ग्बाया", "gd": "स्कटिस गाएलिक", "gez": "गिज", "gil": "गिल्बर्टी", "gl": "गलिसियाली", "glk": "गिलाकी", "gmh": "मध्य उच्च जर्मन", "gn": "गुवारानी", "goh": "पुरातन उच्च जर्मन", "gom": "गोवा कोन्कानी", "gon": "गोन्डी", "gor": "गोरोन्टालो", "got": "गोथिक", "grb": "ग्रेबो", "grc": "पुरातन ग्रिक", "gsw": "स्वीस जर्मन", "gu": "गुजराती", "gur": "फ्राफ्रा", "guz": "गुसी", "gv": "मान्क्स", "gwi": "गुइचिन", "ha": "हाउसा", "hai": "हाइदा", "hak": "हक्का चिनियाँ", "haw": "हवाइयन", "he": "हिब्रु", "hi": "हिन्दी", "hif": "फिजी हिन्दी", "hil": "हिलिगायनोन", "hit": "हिट्टिटे", "hmn": "हमोङ", "ho": "हिरी मोटु", "hr": "क्रोयसियाली", "hsb": "माथिल्लो सोर्बियन", "hsn": "जियाङ चिनियाँ", "ht": "हैटियाली क्रियोल", "hu": "हङ्गेरियाली", "hup": "हुपा", "hy": "आर्मेनियाली", "hz": "हेरेरो", "ia": "इन्टर्लिङ्गुआ", "iba": "इबान", "ibb": "इबिबियो", "id": "इन्डोनेसियाली", "ie": "इन्टरलिङ्ग्वे", "ig": "इग्बो", "ii": "सिचुआन यि", "ik": "इनुपिआक्", "ilo": "इयोको", "inh": "इन्गस", "io": "इडो", "is": "आइसल्यान्डियाली", "it": "इटालेली", "iu": "इनुक्टिटुट", "izh": "इन्ग्रियाली", "ja": "जापानी", "jam": "जमैकाली क्रेओले अङ्ग्रेजी", "jbo": "लोज्बान", "jgo": "न्गोम्बा", "jmc": "माचामे", "jpr": "जुडियो-फारसी", "jrb": "जुडियो-अरबी", "jut": "जुटिस", "jv": "जाभानी", "ka": "जर्जियाली", "kaa": "कारा-काल्पाक", "kab": "काबिल", "kac": "काचिन", "kaj": "ज्जु", "kam": "काम्बा", "kaw": "कावी", "kbd": "काबार्दियाली", "kbl": "कानेम्बु", "kcg": "टुआप", "kde": "माकोन्डे", "kea": "काबुभेर्डियानु", "ken": "केनयाङ", "kfo": "कोरो", "kg": "कोङ्गो", "kgp": "काइनगाङ", "kha": "खासी", "kho": "खोटानी", "khq": "कोयरा चिनी", "khw": "खोवार", "ki": "किकुयु", "kiu": "किर्मान्जकी", "kj": "कुआन्यामा", "kk": "काजाख", "kkj": "काको", "kl": "कालालिसुट", "kln": "कालेन्जिन", "km": "खमेर", "kmb": "किम्बुन्डु", "kn": "कन्नाडा", "ko": "कोरियाली", "koi": "कोमी-पर्म्याक", "kok": "कोन्कानी", "kos": "कोस्राली", "kpe": "क्पेल्ले", "kr": "कानुरी", "krc": "काराचाय-बाल्कर", "kri": "क्रिओ", "krj": "किनाराय-ए", "krl": "करेलियन", "kru": "कुरुख", "ks": "कास्मिरी", "ksb": "शाम्बाला", "ksf": "बाफिया", "ksh": "कोलोग्नियाली", "ku": "कुर्दी", "kum": "कुमिक", "kut": "कुतेनाइ", "kv": "कोमी", "kw": "कोर्निस", "ky": "किर्गिज", "la": "ल्याटिन", "lad": "लाडिनो", "lag": "लाङ्गी", "lah": "लाहन्डा", "lam": "लाम्बा", "lb": "लक्जेम्बर्गी", "lez": "लाज्घियाली", "lfn": "लिङ्गुवा फ्राङ्का नोभा", "lg": "गान्डा", "li": "लिम्बुर्गी", "lij": "लिगुरियाली", "liv": "लिभोनियाली", "lkt": "लाकोता", "lmo": "लोम्बार्ड", "ln": "लिङ्गाला", "lo": "लाओ", "lol": "मोङ्गो", "loz": "लोजी", "lrc": "उत्तरी लुरी", "lt": "लिथुआनियाली", "ltg": "लाट्गाली", "lu": "लुबा-काताङ्गा", "lua": "लुबा-लुलुआ", "lui": "लुइसेनो", "lun": "लुन्डा", "luo": "लुओ", "lus": "मिजो", "luy": "लुइया", "lv": "लात्भियाली", "lzh": "साहित्यिक चिनियाँ", "lzz": "लाज", "mad": "मादुरेसे", "maf": "माफा", "mag": "मगधी", "mai": "मैथिली", "mak": "माकासार", "man": "मान्दिङो", "mas": "मसाई", "mde": "माबा", "mdf": "मोक्ष", "mdr": "मन्दर", "men": "मेन्डे", "mer": "मेरू", "mfe": "मोरिसेन", "mg": "मलागासी", "mga": "मध्य आयरिस", "mgh": "माखुवा-मिट्टो", "mgo": "मेटा", "mh": "मार्साली", "mi": "माओरी", "mic": "मिकमाक", "min": "मिनाङकाबाउ", "mk": "म्यासेडोनियन", "ml": "मलयालम", "mn": "मङ्गोलियाली", "mnc": "मान्चु", "mni": "मनिपुरी", "moh": "मोहक", "mos": "मोस्सी", "mr": "मराठी", "ms": "मलाय", "mt": "माल्टिज", "mua": "मुन्डाङ", "mus": "क्रिक", "mwl": "मिरान्डी", "mwr": "माडवारी", "mwv": "मेन्टावाई", "my": "बर्मेली", "mye": "म्येने", "myv": "इर्ज्या", "mzn": "मजानडेरानी", "na": "नाउरू", "nan": "मिन नान चिनियाँ", "nap": "नेपोलिटान", "naq": "नामा", "nb": "नर्वेली बोकमाल", "nd": "उत्तरी न्डेबेले", "nds": "तल्लो जर्मन", "nds-NL": "तल्लो साक्सन", "ne": "नेपाली", "new": "नेवारी", "ng": "न्दोन्गा", "nia": "नियास", "niu": "निउएन", "njo": "अओ नागा", "nl": "डच", "nl-BE": "फ्लेमिस", "nmg": "क्वासियो", "nn": "नर्वेली नाइनोर्स्क", "nnh": "न्गिएम्बुन", "no": "नर्वेली", "nog": "नोगाइ", "non": "पुरानो नोर्से", "nov": "नोभियल", "nqo": "नको", "nr": "दक्षिण न्देबेले", "nso": "उत्तरी सोथो", "nus": "नुएर", "nv": "नाभाजो", "nwc": "परम्परागत नेवारी", "ny": "न्यान्जा", "nym": "न्यामवेजी", "nyn": "न्यान्कोल", "nyo": "न्योरो", "nzi": "नजिमा", "oc": "अक्सिटन", "oj": "ओजिब्वा", "om": "ओरोमो", "or": "उडिया", "os": "अोस्सेटिक", "osa": "ओसागे", "ota": "अटोमन तुर्की", "pa": "पंजाबी", "pag": "पाङ्गासिनान", "pal": "पाहलावी", "pam": "पामपाङ्गा", "pap": "पापियामेन्तो", "pau": "पालाउवाली", "pcd": "पिकार्ड", "pcm": "नाइजेरियाली पिड्जिन", "pdc": "पेन्सिलभानियाली जर्मन", "peo": "पुरातन फारसी", "pfl": "पालाटिन जर्मन", "phn": "फोनिसियाली", "pi": "पाली", "pl": "पोलिस", "pms": "पिएडमोन्तेसे", "pnt": "पोन्टिक", "prg": "प्रसियाली", "pro": "पुरातन प्रोभेन्काल", "ps": "पास्तो", "pt": "पोर्तुगी", "pt-BR": "ब्राजिली पोर्तुगी", "pt-PT": "युरोपेली पोर्तुगी", "qu": "क्वेचुवा", "quc": "किचे", "qug": "चिम्बोराजो उच्चस्थान किचुआ", "raj": "राजस्थानी", "rap": "रापानुई", "rar": "रारोटोङ्गान", "rm": "रोमानिस", "rn": "रुन्डी", "ro": "रोमानियाली", "ro-MD": "मोल्डाभियाली", "rof": "रोम्बो", "root": "रुट", "ru": "रसियाली", "rup": "अरोमानीयाली", "rw": "किन्यारवान्डा", "rwk": "र्‌वा", "sa": "संस्कृत", "sad": "सान्डेअ", "sah": "साखा", "saq": "साम्बुरू", "sat": "सान्ताली", "sba": "न्गामबाय", "sbp": "साङ्गु", "sc": "सार्डिनियाली", "scn": "सिसिलियाली", "sco": "स्कट्स", "sd": "सिन्धी", "sdh": "दक्षिणी कुर्दिश", "se": "उत्तरी सामी", "seh": "सेना", "ses": "कोयराबोरो सेन्नी", "sg": "साङ्गो", "sga": "पुरातन आयरीस", "shi": "टाचेल्हिट", "shn": "शान", "shu": "चाड अरबी", "si": "सिन्हाली", "sk": "स्लोभाकियाली", "sl": "स्लोभेनियाली", "sli": "तल्लो सिलेसियाली", "sm": "सामोआ", "sma": "दक्षिणी सामी", "smj": "लुले सामी", "smn": "इनारी सामी", "sms": "स्कोइट सामी", "sn": "शोना", "snk": "सोनिन्के", "so": "सोमाली", "sq": "अल्बानियाली", "sr": "सर्बियाली", "srn": "स्रानान टोङ्गो", "ss": "स्वाती", "ssy": "साहो", "st": "दक्षिणी सोथो", "su": "सुडानी", "suk": "सुकुमा", "sus": "सुसू", "sux": "सुमेरियाली", "sv": "स्विडिस", "sw": "स्वाहिली", "sw-CD": "कङ्गो स्वाहिली", "swb": "कोमोरी", "syc": "परम्परागत सिरियाक", "syr": "सिरियाक", "ta": "तामिल", "te": "तेलुगु", "tem": "टिम्ने", "teo": "टेसो", "tet": "टेटुम", "tg": "ताजिक", "th": "थाई", "ti": "टिग्रिन्या", "tig": "टिग्रे", "tk": "टर्कमेन", "tlh": "क्लिङ्गन", "tn": "ट्स्वाना", "to": "टोङ्गन", "tog": "न्यास टोङ्गा", "tpi": "टोक पिसिन", "tr": "टर्किश", "trv": "टारोको", "ts": "ट्सोङ्गा", "tt": "तातार", "ttt": "मुस्लिम टाट", "tum": "टुम्बुका", "tvl": "टुभालु", "twq": "तासावाक", "ty": "टाहिटियन", "tyv": "टुभिनियाली", "tzm": "केन्द्रीय एट्लास टामाजिघट", "udm": "उड्मुर्ट", "ug": "उइघुर", "uk": "युक्रेनी", "umb": "उम्बुन्डी", "ur": "उर्दु", "uz": "उज्बेकी", "vai": "भाइ", "ve": "भेन्डा", "vi": "भियतनामी", "vmf": "मुख्य-फ्राङ्कोनियाली", "vo": "भोलापिक", "vun": "भुन्जो", "wa": "वाल्लुन", "wae": "वाल्सर", "wal": "वोलेट्टा", "war": "वारे", "wbp": "वार्ल्पिरी", "wo": "वुलुफ", "xal": "काल्मिक", "xh": "खोसा", "xmf": "मिनग्रेलियाली", "xog": "सोगा", "yav": "याङ्बेन", "ybb": "येम्बा", "yi": "यिद्दिस", "yo": "योरूवा", "yrl": "न्हिनगातु", "yue": "क्यान्टोनिज", "zbl": "ब्लिससिम्बोल्स", "zgh": "मानक मोरोक्कोन तामाजिघट", "zh": "चिनियाँ", "zh-Hans": "सरलिकृत म्यान्डरिन चिनियाँ", "zh-Hant": "परम्परागत म्यान्डरिन चिनियाँ", "zu": "जुलु", "zun": "जुनी", "zza": "जाजा"}, "scriptNames": {"Cyrl": "सिरिलिक", "Latn": "ल्याटिन", "Arab": "अरबी", "Guru": "गुरूमुखी", "Tfng": "टिफिनाघ", "Vaii": "भाइ", "Hans": "सरलिकृत चिनियाँ", "Hant": "परम्परागत चिनियाँ"}}, "nl": {"rtl": false, "languageNames": {"aa": "Afar", "ab": "Abchazisch", "ace": "Atjehs", "ach": "Akoli", "ada": "Adangme", "ady": "Adygees", "ae": "Avestisch", "aeb": "Tunesisch Arabisch", "af": "Afrikaans", "afh": "Afrihili", "agq": "Aghem", "ain": "Aino", "ak": "Akan", "akk": "Akkadisch", "akz": "Alabama", "ale": "Aleoetisch", "aln": "Gegisch", "alt": "Zuid-Altaïsch", "am": "Amhaars", "an": "Aragonees", "ang": "Oudengels", "anp": "Angika", "ar": "Arabisch", "ar-001": "Arabisch (wereld)", "arc": "Aramees", "arn": "Mapudungun", "aro": "Araona", "arp": "Arapaho", "arq": "Algerijns Arabisch", "ars": "Nadjdi-Arabisch", "arw": "Arawak", "ary": "Marokkaans Arabisch", "arz": "Egyptisch Arabisch", "as": "Assamees", "asa": "Asu", "ase": "Amerikaanse Gebarentaal", "ast": "Asturisch", "av": "Avarisch", "avk": "Kotava", "awa": "Awadhi", "ay": "Aymara", "az": "Azerbeidzjaans", "ba": "Basjkiers", "bal": "Beloetsji", "ban": "Balinees", "bar": "Beiers", "bas": "Basa", "bax": "Bamoun", "bbc": "Batak Toba", "bbj": "Ghomala’", "be": "Wit-Russisch", "bej": "Beja", "bem": "Bemba", "bew": "Betawi", "bez": "Bena", "bfd": "Bafut", "bfq": "Badaga", "bg": "Bulgaars", "bgn": "Westers Beloetsji", "bho": "Bhojpuri", "bi": "Bislama", "bik": "Bikol", "bin": "Bini", "bjn": "Banjar", "bkm": "Kom", "bla": "Siksika", "bm": "Bambara", "bn": "Bengaals", "bo": "Tibetaans", "bpy": "Bishnupriya", "bqi": "Bakhtiari", "br": "Bretons", "bra": "Braj", "brh": "Brahui", "brx": "Bodo", "bs": "Bosnisch", "bss": "Akoose", "bua": "Boerjatisch", "bug": "Buginees", "bum": "Bulu", "byn": "Blin", "byv": "Medumba", "ca": "Catalaans", "cad": "Caddo", "car": "Caribisch", "cay": "Cayuga", "cch": "Atsam", "ccp": "Chakma", "ce": "Tsjetsjeens", "ceb": "Cebuano", "cgg": "Chiga", "ch": "Chamorro", "chb": "Chibcha", "chg": "Chagatai", "chk": "Chuukees", "chm": "Mari", "chn": "Chinook Jargon", "cho": "Choctaw", "chp": "Chipewyan", "chr": "Cherokee", "chy": "Cheyenne", "ckb": "Soranî", "co": "Corsicaans", "cop": "Koptisch", "cps": "Capiznon", "cr": "Cree", "crh": "Krim-Tataars", "crs": "Seychellencreools", "cs": "Tsjechisch", "csb": "Kasjoebisch", "cu": "Kerkslavisch", "cv": "Tsjoevasjisch", "cy": "Welsh", "da": "Deens", "dak": "Dakota", "dar": "Dargwa", "dav": "Taita", "de": "Duits", "de-AT": "Duits (Oostenrijk)", "de-CH": "Duits (Zwitserland)", "del": "Delaware", "den": "Slavey", "dgr": "Dogrib", "din": "Dinka", "dje": "Zarma", "doi": "Dogri", "dsb": "Nedersorbisch", "dtp": "Dusun", "dua": "Duala", "dum": "Middelnederlands", "dv": "Divehi", "dyo": "Jola-Fonyi", "dyu": "Dyula", "dz": "Dzongkha", "dzg": "Dazaga", "ebu": "Embu", "ee": "Ewe", "efi": "Efik", "egl": "Emiliano", "egy": "Oudegyptisch", "eka": "Ekajuk", "el": "Grieks", "elx": "Elamitisch", "en": "Engels", "en-AU": "Engels (Australië)", "en-CA": "Engels (Canada)", "en-GB": "Engels (Verenigd Koninkrijk)", "en-US": "Engels (Verenigde Staten)", "enm": "Middelengels", "eo": "Esperanto", "es": "Spaans", "es-419": "Spaans (Latijns-Amerika)", "es-ES": "Spaans (Spanje)", "es-MX": "Spaans (Mexico)", "esu": "Yupik", "et": "Estisch", "eu": "Baskisch", "ewo": "Ewondo", "ext": "Extremeens", "fa": "Perzisch", "fan": "Fang", "fat": "Fanti", "ff": "Fulah", "fi": "Fins", "fil": "Filipijns", "fit": "Tornedal-Fins", "fj": "Fijisch", "fo": "Faeröers", "fon": "Fon", "fr": "Frans", "fr-CA": "Frans (Canada)", "fr-CH": "Frans (Zwitserland)", "frc": "Cajun-Frans", "frm": "Middelfrans", "fro": "Oudfrans", "frp": "Arpitaans", "frr": "Noord-Fries", "frs": "Oost-Fries", "fur": "Friulisch", "fy": "Fries", "ga": "Iers", "gaa": "Ga", "gag": "Gagaoezisch", "gan": "Ganyu", "gay": "Gayo", "gba": "Gbaya", "gbz": "Zoroastrisch Dari", "gd": "Schots-Gaelisch", "gez": "Ge’ez", "gil": "Gilbertees", "gl": "Galicisch", "glk": "Gilaki", "gmh": "Middelhoogduits", "gn": "Guaraní", "goh": "Oudhoogduits", "gom": "Goa Konkani", "gon": "Gondi", "gor": "Gorontalo", "got": "Gothisch", "grb": "Grebo", "grc": "Oudgrieks", "gsw": "Zwitserduits", "gu": "Gujarati", "guc": "Wayuu", "gur": "Gurune", "guz": "Gusii", "gv": "Manx", "gwi": "Gwichʼin", "ha": "Hausa", "hai": "Haida", "hak": "Hakka", "haw": "Hawaïaans", "he": "Hebreeuws", "hi": "Hindi", "hif": "Fijisch Hindi", "hil": "Hiligaynon", "hit": "Hettitisch", "hmn": "Hmong", "ho": "Hiri Motu", "hr": "Kroatisch", "hsb": "Oppersorbisch", "hsn": "Xiangyu", "ht": "Haïtiaans Creools", "hu": "Hongaars", "hup": "Hupa", "hy": "Armeens", "hz": "Herero", "ia": "Interlingua", "iba": "Iban", "ibb": "Ibibio", "id": "Indonesisch", "ie": "Interlingue", "ig": "Igbo", "ii": "Yi", "ik": "Inupiaq", "ilo": "Iloko", "inh": "Ingoesjetisch", "io": "Ido", "is": "IJslands", "it": "Italiaans", "iu": "Inuktitut", "izh": "Ingrisch", "ja": "Japans", "jam": "Jamaicaans Creools", "jbo": "Lojban", "jgo": "Ngomba", "jmc": "Machame", "jpr": "Judeo-Perzisch", "jrb": "Judeo-Arabisch", "jut": "Jutlands", "jv": "Javaans", "ka": "Georgisch", "kaa": "Karakalpaks", "kab": "Kabylisch", "kac": "Kachin", "kaj": "Jju", "kam": "Kamba", "kaw": "Kawi", "kbd": "Kabardisch", "kbl": "Kanembu", "kcg": "Tyap", "kde": "Makonde", "kea": "Kaapverdisch Creools", "ken": "Kenyang", "kfo": "Koro", "kg": "Kongo", "kgp": "Kaingang", "kha": "Khasi", "kho": "Khotanees", "khq": "Koyra Chiini", "khw": "Khowar", "ki": "Gikuyu", "kiu": "Kirmanckî", "kj": "Kuanyama", "kk": "Kazachs", "kkj": "Kako", "kl": "Groenlands", "kln": "Kalenjin", "km": "Khmer", "kmb": "Kimbundu", "kn": "Kannada", "ko": "Koreaans", "koi": "Komi-Permjaaks", "kok": "Konkani", "kos": "Kosraeaans", "kpe": "Kpelle", "kr": "Kanuri", "krc": "Karatsjaj-Balkarisch", "kri": "Krio", "krj": "Kinaray-a", "krl": "Karelisch", "kru": "Kurukh", "ks": "Kasjmiri", "ksb": "Shambala", "ksf": "Bafia", "ksh": "Kölsch", "ku": "Koerdisch", "kum": "Koemuks", "kut": "Kutenai", "kv": "Komi", "kw": "Cornish", "ky": "Kirgizisch", "la": "Latijn", "lad": "Ladino", "lag": "Langi", "lah": "Lahnda", "lam": "Lamba", "lb": "Luxemburgs", "lez": "Lezgisch", "lfn": "Lingua Franca Nova", "lg": "Luganda", "li": "Limburgs", "lij": "Ligurisch", "liv": "Lijfs", "lkt": "Lakota", "lmo": "Lombardisch", "ln": "Lingala", "lo": "Laotiaans", "lol": "Mongo", "lou": "Louisiana-Creools", "loz": "Lozi", "lrc": "Noordelijk Luri", "lt": "Litouws", "ltg": "Letgaals", "lu": "Luba-Katanga", "lua": "Luba-Lulua", "lui": "Luiseno", "lun": "Lunda", "luo": "Luo", "lus": "Mizo", "luy": "Luyia", "lv": "Lets", "lzh": "Klassiek Chinees", "lzz": "Lazisch", "mad": "Madoerees", "maf": "Mafa", "mag": "Magahi", "mai": "Maithili", "mak": "Makassaars", "man": "Mandingo", "mas": "Maa", "mde": "Maba", "mdf": "Moksja", "mdr": "Mandar", "men": "Mende", "mer": "Meru", "mfe": "Morisyen", "mg": "Malagassisch", "mga": "Middeliers", "mgh": "Makhuwa-Meetto", "mgo": "Meta’", "mh": "Marshallees", "mi": "Maori", "mic": "Mi’kmaq", "min": "Minangkabau", "mk": "Macedonisch", "ml": "Malayalam", "mn": "Mongools", "mnc": "Mantsjoe", "mni": "Meitei", "moh": "Mohawk", "mos": "Mossi", "mr": "Marathi", "mrj": "West-Mari", "ms": "Maleis", "mt": "Maltees", "mua": "Mundang", "mus": "Creek", "mwl": "Mirandees", "mwr": "Marwari", "mwv": "Mentawai", "my": "Birmaans", "mye": "Myene", "myv": "Erzja", "mzn": "Mazanderani", "na": "Nauruaans", "nan": "Minnanyu", "nap": "Napolitaans", "naq": "Nama", "nb": "Noors - Bokmål", "nd": "Noord-Ndebele", "nds": "Nedersaksisch", "nds-NL": "Nederduits", "ne": "Nepalees", "new": "Newari", "ng": "Ndonga", "nia": "Nias", "niu": "Niueaans", "njo": "Ao Naga", "nl": "Nederlands", "nl-BE": "Nederlands (België)", "nmg": "Ngumba", "nn": "Noors - Nynorsk", "nnh": "Ngiemboon", "no": "Noors", "nog": "Nogai", "non": "Oudnoors", "nov": "Novial", "nqo": "N’Ko", "nr": "Zuid-Ndbele", "nso": "Noord-Sotho", "nus": "Nuer", "nv": "Navajo", "nwc": "Klassiek Nepalbhasa", "ny": "Nyanja", "nym": "Nyamwezi", "nyn": "Nyankole", "nyo": "Nyoro", "nzi": "Nzima", "oc": "Occitaans", "oj": "Ojibwa", "om": "Afaan Oromo", "or": "Odia", "os": "Ossetisch", "osa": "Osage", "ota": "Ottomaans-Turks", "pa": "Punjabi", "pag": "Pangasinan", "pal": "Pahlavi", "pam": "Pampanga", "pap": "Papiaments", "pau": "Palaus", "pcd": "Picardisch", "pcm": "Nigeriaans Pidgin", "pdc": "Pennsylvania-Duits", "pdt": "Plautdietsch", "peo": "Oudperzisch", "pfl": "Paltsisch", "phn": "Foenicisch", "pi": "Pali", "pl": "Pools", "pms": "Piëmontees", "pnt": "Pontisch", "pon": "Pohnpeiaans", "prg": "Oudpruisisch", "pro": "Oudprovençaals", "ps": "Pasjtoe", "pt": "Portugees", "pt-BR": "Portugees (Brazilië)", "pt-PT": "Portugees (Portugal)", "qu": "Quechua", "quc": "K’iche’", "qug": "Kichwa", "raj": "Rajasthani", "rap": "Rapanui", "rar": "Rarotongan", "rgn": "Romagnol", "rif": "Riffijns", "rm": "Reto-Romaans", "rn": "Kirundi", "ro": "Roemeens", "ro-MD": "Roemeens (Moldavië)", "rof": "Rombo", "rom": "Romani", "root": "Root", "rtm": "Rotumaans", "ru": "Russisch", "rue": "Roetheens", "rug": "Roviana", "rup": "Aroemeens", "rw": "Kinyarwanda", "rwk": "Rwa", "sa": "Sanskriet", "sad": "Sandawe", "sah": "Jakoets", "sam": "Samaritaans-Aramees", "saq": "Samburu", "sas": "Sasak", "sat": "Santali", "saz": "Saurashtra", "sba": "Ngambay", "sbp": "Sangu", "sc": "Sardijns", "scn": "Siciliaans", "sco": "Schots", "sd": "Sindhi", "sdc": "Sassarees", "sdh": "Pahlavani", "se": "Noord-Samisch", "see": "Seneca", "seh": "Sena", "sei": "Seri", "sel": "Selkoeps", "ses": "Koyraboro Senni", "sg": "Sango", "sga": "Oudiers", "sgs": "Samogitisch", "sh": "Servo-Kroatisch", "shi": "Tashelhiyt", "shn": "Shan", "shu": "Tsjadisch Arabisch", "si": "Singalees", "sid": "Sidamo", "sk": "Slowaaks", "sl": "Sloveens", "sli": "Silezisch Duits", "sly": "Selayar", "sm": "Samoaans", "sma": "Zuid-Samisch", "smj": "Lule-Samisch", "smn": "Inari-Samisch", "sms": "Skolt-Samisch", "sn": "Shona", "snk": "Soninke", "so": "Somalisch", "sog": "Sogdisch", "sq": "Albanees", "sr": "Servisch", "srn": "Sranantongo", "srr": "Serer", "ss": "Swazi", "ssy": "Saho", "st": "Zuid-Sotho", "stq": "Saterfries", "su": "Soendanees", "suk": "Sukuma", "sus": "Soesoe", "sux": "Soemerisch", "sv": "Zweeds", "sw": "Swahili", "sw-CD": "Swahili (Congo-Kinshasa)", "swb": "Shimaore", "syc": "Klassiek Syrisch", "syr": "Syrisch", "szl": "Silezisch", "ta": "Tamil", "tcy": "Tulu", "te": "Telugu", "tem": "Timne", "teo": "Teso", "ter": "Tereno", "tet": "Tetun", "tg": "Tadzjieks", "th": "Thai", "ti": "Tigrinya", "tig": "Tigre", "tiv": "Tiv", "tk": "Turkmeens", "tkl": "Tokelaus", "tkr": "Tsakhur", "tl": "Tagalog", "tlh": "Klingon", "tli": "Tlingit", "tly": "Talysh", "tmh": "Tamashek", "tn": "Tswana", "to": "Tongaans", "tog": "Nyasa Tonga", "tpi": "Tok Pisin", "tr": "Turks", "tru": "Turoyo", "trv": "Taroko", "ts": "Tsonga", "tsd": "Tsakonisch", "tsi": "Tsimshian", "tt": "Tataars", "ttt": "Moslim Tat", "tum": "Toemboeka", "tvl": "Tuvaluaans", "tw": "Twi", "twq": "Tasawaq", "ty": "Tahitiaans", "tyv": "Toevaans", "tzm": "Tamazight (Centraal-Marokko)", "udm": "Oedmoerts", "ug": "Oeigoers", "uga": "Oegaritisch", "uk": "Oekraïens", "umb": "Umbundu", "ur": "Urdu", "uz": "Oezbeeks", "vai": "Vai", "ve": "Venda", "vec": "Venetiaans", "vep": "Wepsisch", "vi": "Vietnamees", "vls": "West-Vlaams", "vmf": "Opperfrankisch", "vo": "Volapük", "vot": "Votisch", "vro": "Võro", "vun": "Vunjo", "wa": "Waals", "wae": "Walser", "wal": "Wolaytta", "war": "Waray", "was": "Washo", "wbp": "Warlpiri", "wo": "Wolof", "wuu": "Wuyu", "xal": "Kalmuks", "xh": "Xhosa", "xmf": "Mingreels", "xog": "Soga", "yao": "Yao", "yap": "Yapees", "yav": "Yangben", "ybb": "Yemba", "yi": "Jiddisch", "yo": "Yoruba", "yrl": "Nheengatu", "yue": "Kantonees", "za": "Zhuang", "zap": "Zapotec", "zbl": "Blissymbolen", "zea": "Zeeuws", "zen": "Zenaga", "zgh": "Standaard Marokkaanse Tamazight", "zh": "Chinees", "zh-Hans": "Mandarijn (vereenvoudigd)", "zh-Hant": "Mandarijn (traditioneel)", "zu": "Zoeloe", "zun": "Zuni", "zza": "Zaza"}, "scriptNames": {"Cyrl": "Cyrillisch", "Latn": "Latijns", "Arab": "Arabisch", "Guru": "Gurmukhi", "Tfng": "Tifinagh", "Vaii": "Vai", "Hans": "vereenvoudigd", "Hant": "traditioneel"}}, "nn": {"rtl": false, "languageNames": {"aa": "afar", "ab": "abkhasisk", "ace": "achinesisk", "ach": "acoli", "ada": "adangme", "ady": "adygeisk", "ae": "avestisk", "af": "afrikaans", "afh": "afrihili", "agq": "aghem", "ain": "ainu", "ak": "akan", "akk": "akkadisk", "ale": "aleutisk", "alt": "sør-altaj", "am": "amharisk", "an": "aragonsk", "ang": "gammalengelsk", "anp": "angika", "ar": "arabisk", "ar-001": "moderne standardarabisk", "arc": "arameisk", "arn": "mapudungun", "arp": "arapaho", "arw": "arawak", "as": "assamesisk", "asa": "asu (Tanzania)", "ast": "asturisk", "av": "avarisk", "awa": "avadhi", "ay": "aymara", "az": "aserbajdsjansk", "ba": "basjkirsk", "bal": "baluchi", "ban": "balinesisk", "bas": "basa", "bax": "bamun", "be": "kviterussisk", "bej": "beja", "bem": "bemba", "bez": "bena (Tanzania)", "bg": "bulgarsk", "bho": "bhojpuri", "bi": "bislama", "bik": "bikol", "bin": "bini", "bla": "siksika", "bm": "bambara", "bn": "bengali", "bo": "tibetansk", "br": "bretonsk", "bra": "braj", "brx": "bodo", "bs": "bosnisk", "bss": "bakossi", "bua": "burjatisk", "bug": "buginesisk", "byn": "blin", "ca": "katalansk", "cad": "caddo", "car": "carib", "cch": "atsam", "ce": "tsjetsjensk", "ceb": "cebuano", "cgg": "kiga", "ch": "chamorro", "chb": "chibcha", "chg": "tsjagataisk", "chk": "chuukesisk", "chm": "mari", "chn": "chinook", "cho": "choctaw", "chp": "chipewiansk", "chr": "cherokee", "chy": "cheyenne", "ckb": "sorani", "co": "korsikansk", "cop": "koptisk", "cr": "cree", "crh": "krimtatarisk", "crs": "seselwa (fransk-kreolsk)", "cs": "tsjekkisk", "csb": "kasjubisk", "cu": "kyrkjeslavisk", "cv": "tsjuvansk", "cy": "walisisk", "da": "dansk", "dak": "dakota", "dar": "dargwa", "dav": "taita", "de": "tysk", "de-AT": "tysk (Austerrike)", "de-CH": "tysk (Sveits)", "del": "delaware", "den": "slavej", "dgr": "dogrib", "din": "dinka", "dje": "zarma", "doi": "dogri", "dsb": "lågsorbisk", "dua": "duala", "dum": "mellomnederlandsk", "dv": "divehi", "dyo": "jola-fonyi", "dyu": "dyula", "dz": "dzongkha", "dzg": "dazaga", "ebu": "embu", "ee": "ewe", "efi": "efik", "egy": "gammalegyptisk", "eka": "ekajuk", "el": "gresk", "elx": "elamite", "en": "engelsk", "en-AU": "engelsk (Australia)", "en-CA": "engelsk (Canada)", "en-GB": "britisk engelsk", "en-US": "engelsk (USA)", "enm": "mellomengelsk", "eo": "esperanto", "es": "spansk", "es-419": "spansk (Latin-Amerika)", "es-ES": "spansk (Spania)", "es-MX": "spansk (Mexico)", "et": "estisk", "eu": "baskisk", "ewo": "ewondo", "fa": "persisk", "fan": "fang", "fat": "fanti", "ff": "fulfulde", "fi": "finsk", "fil": "filippinsk", "fj": "fijiansk", "fo": "færøysk", "fr": "fransk", "fr-CA": "fransk (Canada)", "fr-CH": "fransk (Sveits)", "frm": "mellomfransk", "fro": "gammalfransk", "frr": "nordfrisisk", "frs": "austfrisisk", "fur": "friulisk", "fy": "vestfrisisk", "ga": "irsk", "gaa": "ga", "gay": "gayo", "gba": "gbaya", "gd": "skotsk-gælisk", "gez": "geez", "gil": "gilbertese", "gl": "galicisk", "gmh": "mellomhøgtysk", "gn": "guarani", "goh": "gammalhøgtysk", "gon": "gondi", "gor": "gorontalo", "got": "gotisk", "grb": "grebo", "grc": "gammalgresk", "gsw": "sveitsertysk", "gu": "gujarati", "guz": "gusii", "gv": "manx", "gwi": "gwichin", "ha": "hausa", "hai": "haida", "haw": "hawaiisk", "he": "hebraisk", "hi": "hindi", "hil": "hiligaynon", "hit": "hettittisk", "hmn": "hmong", "ho": "hiri motu", "hr": "kroatisk", "hsb": "høgsorbisk", "ht": "haitisk", "hu": "ungarsk", "hup": "hupa", "hy": "armensk", "hz": "herero", "ia": "interlingua", "iba": "iban", "ibb": "ibibio", "id": "indonesisk", "ie": "interlingue", "ig": "ibo", "ii": "sichuan-yi", "ik": "inupiak", "ilo": "iloko", "inh": "ingusjisk", "io": "ido", "is": "islandsk", "it": "italiensk", "iu": "inuktitut", "ja": "japansk", "jbo": "lojban", "jgo": "ngomba", "jmc": "machame", "jpr": "jødepersisk", "jrb": "jødearabisk", "jv": "javanesisk", "ka": "georgisk", "kaa": "karakalpakisk", "kab": "kabyle", "kac": "kachin", "kaj": "jju", "kam": "kamba", "kaw": "kawi", "kbd": "kabardisk", "kcg": "tyap", "kde": "makonde", "kea": "kabuverdianu", "kfo": "koro", "kg": "kikongo", "kha": "khasi", "kho": "khotanesisk", "khq": "koyra chiini", "ki": "kikuyu", "kj": "kuanyama", "kk": "kasakhisk", "kkj": "kako", "kl": "grønlandsk (kalaallisut)", "kln": "kalenjin", "km": "khmer", "kmb": "kimbundu", "kn": "kannada", "ko": "koreansk", "kok": "konkani", "kos": "kosraeansk", "kpe": "kpelle", "kr": "kanuri", "krc": "karachay-balkar", "krl": "karelsk", "kru": "kurukh", "ks": "kasjmiri", "ksb": "shambala", "ksf": "bafia", "ksh": "kølnsk", "ku": "kurdisk", "kum": "kumyk", "kut": "kutenai", "kv": "komi", "kw": "kornisk", "ky": "kirgisisk", "la": "latin", "lad": "ladino", "lag": "langi", "lah": "lahnda", "lam": "lamba", "lb": "luxemburgsk", "lez": "lezghian", "lg": "ganda", "li": "limburgisk", "lkt": "lakota", "ln": "lingala", "lo": "laotisk", "lol": "mongo", "loz": "lozi", "lrc": "nord-lurisk", "lt": "litauisk", "lu": "luba-katanga", "lua": "luba-lulua", "lui": "luiseno", "lun": "lunda", "lus": "lushai", "luy": "olulujia", "lv": "latvisk", "mad": "maduresisk", "mag": "magahi", "mai": "maithili", "mak": "makasar", "man": "mandingo", "mas": "masai", "mdf": "moksha", "mdr": "mandar", "men": "mende", "mer": "meru", "mfe": "morisyen", "mg": "madagassisk", "mga": "mellomirsk", "mgh": "Makhuwa-Meetto", "mgo": "meta’", "mh": "marshallesisk", "mi": "maori", "mic": "micmac", "min": "minangkabau", "mk": "makedonsk", "ml": "malayalam", "mn": "mongolsk", "mnc": "mandsju", "mni": "manipuri", "moh": "mohawk", "mos": "mossi", "mr": "marathi", "ms": "malayisk", "mt": "maltesisk", "mua": "mundang", "mus": "creek", "mwl": "mirandesisk", "mwr": "marwari", "my": "burmesisk", "myv": "erzia", "mzn": "mazanderani", "na": "nauru", "nap": "napolitansk", "naq": "nama", "nb": "bokmål", "nd": "nord-ndebele", "nds": "lågtysk", "nds-NL": "lågsaksisk", "ne": "nepalsk", "new": "newari", "ng": "ndonga", "nia": "nias", "niu": "niuisk", "nl": "nederlandsk", "nl-BE": "flamsk", "nmg": "kwasio", "nn": "nynorsk", "nnh": "ngiemboon", "no": "norsk", "nog": "nogai", "non": "gammalnorsk", "nqo": "n’ko", "nr": "sør-ndebele", "nso": "nordsotho", "nus": "nuer", "nv": "navajo", "nwc": "klassisk newarisk", "ny": "nyanja", "nym": "nyamwezi", "nyn": "nyankole", "nyo": "nyoro", "nzi": "nzima", "oc": "oksitansk", "oj": "ojibwa", "om": "oromo", "or": "odia", "os": "ossetisk", "osa": "osage", "ota": "ottomansk tyrkisk", "pa": "panjabi", "pag": "pangasinan", "pal": "pahlavi", "pam": "pampanga", "pap": "papiamento", "pau": "palauisk", "pcm": "nigeriansk pidgin", "peo": "gammalpersisk", "phn": "fønikisk", "pi": "pali", "pl": "polsk", "pon": "ponapisk", "prg": "prøyssisk", "pro": "gammalprovençalsk", "ps": "pashto", "pt": "portugisisk", "pt-BR": "portugisisk (Brasil)", "pt-PT": "portugisisk (Portugal)", "qu": "quechua", "quc": "k’iche", "raj": "rajasthani", "rap": "rapanui", "rar": "rarotongansk", "rm": "retoromansk", "rn": "rundi", "ro": "rumensk", "ro-MD": "moldavisk", "rof": "rombo", "rom": "romani", "root": "rot", "ru": "russisk", "rup": "arumensk", "rw": "kinjarwanda", "rwk": "rwa", "sa": "sanskrit", "sad": "sandawe", "sah": "sakha", "sam": "samaritansk arameisk", "saq": "samburu", "sas": "sasak", "sat": "santali", "sba": "ngambay", "sbp": "sangu", "sc": "sardinsk", "scn": "siciliansk", "sco": "skotsk", "sd": "sindhi", "se": "nordsamisk", "seh": "sena", "sel": "selkupisk", "ses": "Koyraboro Senni", "sg": "sango", "sga": "gammalirsk", "sh": "serbokroatisk", "shi": "tachelhit", "shn": "shan", "si": "singalesisk", "sid": "sidamo", "sk": "slovakisk", "sl": "slovensk", "sm": "samoansk", "sma": "sørsamisk", "smj": "lulesamisk", "smn": "enaresamisk", "sms": "skoltesamisk", "sn": "shona", "snk": "soninke", "so": "somali", "sog": "sogdisk", "sq": "albansk", "sr": "serbisk", "srn": "sranan tongo", "srr": "serer", "ss": "swati", "ssy": "saho", "st": "sørsotho", "su": "sundanesisk", "suk": "sukuma", "sus": "susu", "sux": "sumerisk", "sv": "svensk", "sw": "swahili", "sw-CD": "swahili (Kongo-Kinshasa)", "swb": "shimaore", "syc": "klassisk syrisk", "syr": "syrisk", "ta": "tamil", "te": "telugu", "tem": "temne", "teo": "teso", "ter": "tereno", "tet": "tetum", "tg": "tadsjikisk", "th": "thai", "ti": "tigrinja", "tig": "tigré", "tiv": "tivi", "tk": "turkmensk", "tkl": "tokelau", "tl": "tagalog", "tlh": "klingon", "tli": "tlingit", "tmh": "tamasjek", "tn": "tswana", "to": "tongansk", "tog": "tonga (Nyasa)", "tpi": "tok pisin", "tr": "tyrkisk", "trv": "taroko", "ts": "tsonga", "tsi": "tsimshian", "tt": "tatarisk", "tum": "tumbuka", "tvl": "tuvalu", "tw": "twi", "twq": "tasawaq", "ty": "tahitisk", "tyv": "tuvinisk", "tzm": "sentral-tamazight", "udm": "udmurt", "ug": "uigurisk", "uga": "ugaritisk", "uk": "ukrainsk", "umb": "umbundu", "ur": "urdu", "uz": "usbekisk", "ve": "venda", "vi": "vietnamesisk", "vo": "volapyk", "vot": "votisk", "vun": "vunjo", "wa": "vallonsk", "wae": "walsertysk", "wal": "wolaytta", "war": "waray", "was": "washo", "wo": "wolof", "xal": "kalmykisk", "xh": "xhosa", "xog": "soga", "yap": "yapesisk", "yav": "yangben", "ybb": "yemba", "yi": "jiddisk", "yo": "joruba", "yue": "kantonesisk", "za": "zhuang", "zap": "zapotec", "zbl": "blissymbol", "zen": "zenaga", "zgh": "standard marokkansk tamazight", "zh": "kinesisk", "zh-Hans": "kinesisk (forenkla)", "zh-Hant": "kinesisk (tradisjonell)", "zu": "zulu", "zun": "zuni", "zza": "zaza"}, "scriptNames": {"Cyrl": "kyrillisk", "Latn": "latinsk", "Arab": "arabisk", "Guru": "gurmukhi", "Tfng": "tifinagh", "Vaii": "vai", "Hans": "forenkla", "Hant": "tradisjonell"}}, diff --git a/data/phone-formats.json b/data/phone-formats.json deleted file mode 100644 index 4acf74753..000000000 --- a/data/phone-formats.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "dataPhoneFormats": { - "ag": "+1-268-555-1234", - "ai": "+1-264-555-1234", - "as": "+1-684-555-1234", - "at": "+43 1 123 45 67", - "au": "+61 1 2345 6789", - "bb": "+1-246-555-1234", - "bj": "+229 20 12 34 56", - "bm": "+1-441-555-1234", - "bo": "+591 1 2345678", - "br": "+55 11 0982 1098", - "bs": "+1-242-555-1234", - "ca": "+1-226-555-1234", - "ci": "+225 20 12 34 56", - "cn": "+86 10 12345678", - "de": "+49 89 1234567", - "dm": "+1-767-555-1234", - "do": "+1-809-555-1234", - "es": "+34 989 12 34 56", - "fi": "+358 40 123 4567", - "fr": "+33 1 23 45 67 89", - "gb": "+44 1632 961234", - "gd": "+1-473-555-1234", - "gg": "+44 1632 961234", - "gu": "+1-671-555-1234", - "hk": "+852 1234 5678", - "hr": "+385 01 123 4567", - "hu": "+36 1 123 45 67", - "ie": "+353 20 912 3456", - "im": "+44 1632 961234", - "it": "+39 01 123 456", - "je": "+44 1632 961234", - "jm": "+1-876-555-1234", - "kn": "+1-869-555-1234", - "ky": "+1-345-555-1234", - "kz": "+7 495 1234567", - "lc": "+1-758-555-1234", - "mp": "+1-670-555-1234", - "ms": "+1-664-555-1234", - "nl": "+31 42 123 4567", - "no": "+47 22 12 34 56", - "pe": "+51 1 1234567", - "pl": "+48 42 123 4567", - "pr": "+1-787-555-1234", - "pt": "+351 211 123456", - "ru": "+7 495 1234567", - "se": "+46 31 123 4567", - "si": "+386 31 123 4567", - "sj": "+47 22 12 34 56", - "sx": "+1-721-555-1234", - "tc": "+1-649-555-1234", - "tr": "+90 312 123 4567", - "tt": "+1-868-555-1234", - "tw": "+886 1 2345 6789", - "ua": "+380 44 123 4567", - "us": "+1-202-555-1234", - "va": "+39 01 123 456", - "vc": "+1-784-555-1234", - "vg": "+1-284-555-1234", - "vi": "+1-340-555-1234", - "vn": "+84 1 234 5678", - "za": "+27 11 907 1111" - } -} diff --git a/data/phone_formats.json b/data/phone_formats.json new file mode 100644 index 000000000..28d65c6d2 --- /dev/null +++ b/data/phone_formats.json @@ -0,0 +1,63 @@ +{ + "ag": "+1-268-555-1234", + "ai": "+1-264-555-1234", + "as": "+1-684-555-1234", + "at": "+43 1 123 45 67", + "au": "+61 1 2345 6789", + "bb": "+1-246-555-1234", + "bj": "+229 20 12 34 56", + "bm": "+1-441-555-1234", + "bo": "+591 1 2345678", + "br": "+55 11 0982 1098", + "bs": "+1-242-555-1234", + "ca": "+1-226-555-1234", + "ci": "+225 20 12 34 56", + "cn": "+86 10 12345678", + "de": "+49 89 1234567", + "dm": "+1-767-555-1234", + "do": "+1-809-555-1234", + "es": "+34 989 12 34 56", + "fi": "+358 40 123 4567", + "fr": "+33 1 23 45 67 89", + "gb": "+44 1632 961234", + "gd": "+1-473-555-1234", + "gg": "+44 1632 961234", + "gu": "+1-671-555-1234", + "hk": "+852 1234 5678", + "hr": "+385 01 123 4567", + "hu": "+36 1 123 45 67", + "ie": "+353 20 912 3456", + "im": "+44 1632 961234", + "it": "+39 01 123 456", + "je": "+44 1632 961234", + "jm": "+1-876-555-1234", + "kn": "+1-869-555-1234", + "ky": "+1-345-555-1234", + "kz": "+7 495 1234567", + "lc": "+1-758-555-1234", + "mp": "+1-670-555-1234", + "ms": "+1-664-555-1234", + "nl": "+31 42 123 4567", + "no": "+47 22 12 34 56", + "pe": "+51 1 1234567", + "pl": "+48 42 123 4567", + "pr": "+1-787-555-1234", + "pt": "+351 211 123456", + "ru": "+7 495 1234567", + "se": "+46 31 123 4567", + "si": "+386 31 123 4567", + "sj": "+47 22 12 34 56", + "sx": "+1-721-555-1234", + "tc": "+1-649-555-1234", + "tr": "+90 312 123 4567", + "tt": "+1-868-555-1234", + "tw": "+886 1 2345 6789", + "ua": "+380 44 123 4567", + "us": "+1-202-555-1234", + "va": "+39 01 123 456", + "vc": "+1-784-555-1234", + "vg": "+1-284-555-1234", + "vi": "+1-340-555-1234", + "vn": "+84 1 234 5678", + "za": "+27 11 907 1111" +} \ No newline at end of file diff --git a/data/shortcuts.json b/data/shortcuts.json index 22a2a60f5..363486f23 100644 --- a/data/shortcuts.json +++ b/data/shortcuts.json @@ -1,342 +1,340 @@ -{ - "dataShortcuts": [ - { - "tab": "browsing", - "text": "shortcuts.browsing.title", - "columns": [ - { - "rows": [ - { - "section": "navigation", - "text": "shortcuts.browsing.navigation.title" - }, - { - "shortcuts": ["↓", "↑", "←", "→"], - "text": "shortcuts.browsing.navigation.pan", - "separator": "," - }, - { - "modifiers": ["⌘"], - "shortcuts": ["↓", "↑", "←", "→"], - "text": "shortcuts.browsing.navigation.pan_more", - "separator": "," - }, - { - "shortcuts": ["+", "-"], - "text": "shortcuts.browsing.navigation.zoom", - "separator": "," - }, - { - "modifiers": ["⌘"], - "shortcuts": ["+", "-"], - "text": "shortcuts.browsing.navigation.zoom_more", - "separator": "," - }, - { - "section": "display_options", - "text": "shortcuts.browsing.display_options.title" - }, - { - "shortcuts": ["background.key"], - "text": "shortcuts.browsing.display_options.background" - }, - { - "modifiers": ["⌘"], - "shortcuts": ["background.key"], - "text": "shortcuts.browsing.display_options.background_switch" - }, - { - "shortcuts": ["map_data.key"], - "text": "shortcuts.browsing.display_options.map_data" - }, - { - "shortcuts": ["issues.key"], - "text": "shortcuts.browsing.display_options.issues" - }, - { - "shortcuts": ["preferences.key"], - "text": "shortcuts.browsing.display_options.preferences" - }, - { - "modifiers": ["⌃", "⌘"], - "shortcuts": ["F", "F11"], - "text": "shortcuts.browsing.display_options.fullscreen" - }, - { - "shortcuts": ["sidebar.key", "`", "²"], - "text": "shortcuts.browsing.display_options.sidebar" - }, - { - "shortcuts": ["area_fill.wireframe.key"], - "text": "shortcuts.browsing.display_options.wireframe" - }, - { - "modifiers": ["⌥"], - "shortcuts": ["area_fill.wireframe.key"], - "text": "shortcuts.browsing.display_options.osm_data" - }, - { - "shortcuts": ["background.minimap.key"], - "text": "shortcuts.browsing.display_options.minimap" - }, - { - "shortcuts": ["map_data.highlight_edits.key"], - "text": "shortcuts.browsing.display_options.highlight_edits" - } - ] - }, - { - "rows": [ - { - "section": "help", - "text": "shortcuts.browsing.help.title" - }, - { - "shortcuts": ["help.key"], - "text": "shortcuts.browsing.help.help" - }, - { - "shortcuts": ["shortcuts.toggle.key", "?"], - "text": "shortcuts.browsing.help.keyboard" - }, - { - "section": "selecting", - "text": "shortcuts.browsing.selecting.title" - }, - { - "shortcuts": ["Left-click"], - "text": "shortcuts.browsing.selecting.select_one" - }, - { - "modifiers": ["⇧"], - "shortcuts": ["Left-click"], - "text": "shortcuts.browsing.selecting.select_multi" - }, - { - "modifiers": ["⇧"], - "shortcuts": ["Left-click"], - "gesture": "shortcuts.gesture.drag", - "text": "shortcuts.browsing.selecting.lasso" - }, - { - "modifiers": ["⌘"], - "shortcuts": ["F"], - "text": "shortcuts.browsing.selecting.search" - }, - { - "section": "with_selected", - "text": "shortcuts.browsing.with_selected.title" - }, - { - "shortcuts": ["Right-click", "shortcuts.key.space"], - "text": "shortcuts.browsing.with_selected.edit_menu" - }, - { - "shortcuts": ["inspector.zoom_to.key"], - "text": "shortcuts.browsing.with_selected.zoom_to" - }, - { - "section": "vertex_selected", - "text": "shortcuts.browsing.vertex_selected.title" - }, - { - "shortcuts": ["[", "↖"], - "text": "shortcuts.browsing.vertex_selected.previous" - }, - { - "shortcuts": ["]", "↘"], - "text": "shortcuts.browsing.vertex_selected.next" - }, - { - "shortcuts": ["{", "⇞"], - "text": "shortcuts.browsing.vertex_selected.first" - }, - { - "shortcuts": ["}", "⇟"], - "text": "shortcuts.browsing.vertex_selected.last" - }, - { - "shortcuts": ["\\", "shortcuts.key.pause"], - "text": "shortcuts.browsing.vertex_selected.change_parent" - } - ] - } - ] - }, - { - "tab": "editing", - "text": "shortcuts.editing.title", - "columns": [ - { - "rows": [ - { - "section": "drawing", - "text": "shortcuts.editing.drawing.title" - }, - { - "shortcuts": ["1"], - "text": "shortcuts.editing.drawing.add_point" - }, - { - "shortcuts": ["2"], - "text": "shortcuts.editing.drawing.add_line" - }, - { - "shortcuts": ["3"], - "text": "shortcuts.editing.drawing.add_area" - }, - { - "shortcuts": ["modes.add_note.key"], - "text": "shortcuts.editing.drawing.add_note" - }, - { - "shortcuts": ["Left-click", "shortcuts.key.space"], - "text": "shortcuts.editing.drawing.place_point" - }, - { - "shortcuts": ["⌥"], - "text": "shortcuts.editing.drawing.disable_snap" - }, - { - "shortcuts": ["↵", "⎋"], - "text": "shortcuts.editing.drawing.stop_line" - }, - { - "section": "commands", - "text": "shortcuts.editing.commands.title" - }, - { - "modifiers": ["⌘"], - "shortcuts": ["C"], - "text": "shortcuts.editing.commands.copy" - }, - { - "modifiers": ["⌘"], - "shortcuts": ["V"], - "text": "shortcuts.editing.commands.paste" - }, - { - "modifiers": ["⌘"], - "shortcuts": ["Z"], - "text": "shortcuts.editing.commands.undo" - }, - { - "modifiers": ["⌘", "⇧"], - "shortcuts": ["Z"], - "text": "shortcuts.editing.commands.redo" - }, - { - "modifiers": ["⌘"], - "shortcuts": ["S"], - "text": "shortcuts.editing.commands.save" - } - ] - }, - { - "rows": [ - { - "section": "operations", - "text": "shortcuts.editing.operations.title" - }, - { - "shortcuts": ["operations.continue.key"], - "text": "shortcuts.editing.operations.continue_line" - }, - { - "shortcuts": ["operations.merge.key"], - "text": "shortcuts.editing.operations.merge" - }, - { - "shortcuts": ["operations.disconnect.key"], - "text": "shortcuts.editing.operations.disconnect" - }, - { - "shortcuts": ["operations.extract.key"], - "text": "shortcuts.editing.operations.extract" - }, - { - "shortcuts": ["operations.split.key"], - "text": "shortcuts.editing.operations.split" - }, - { - "shortcuts": ["operations.reverse.key"], - "text": "shortcuts.editing.operations.reverse" - }, - { - "shortcuts": ["operations.move.key"], - "text": "shortcuts.editing.operations.move" - }, - { - "shortcuts": ["operations.rotate.key"], - "text": "shortcuts.editing.operations.rotate" - }, - { - "shortcuts": ["operations.orthogonalize.key"], - "text": "shortcuts.editing.operations.orthogonalize" - }, - { - "shortcuts": ["operations.straighten.key"], - "text": "shortcuts.editing.operations.straighten" - }, - { - "shortcuts": ["operations.circularize.key"], - "text": "shortcuts.editing.operations.circularize" - }, - { - "shortcuts": ["operations.reflect.key.long"], - "text": "shortcuts.editing.operations.reflect_long" - }, - { - "shortcuts": ["operations.reflect.key.short"], - "text": "shortcuts.editing.operations.reflect_short" - }, - { - "modifiers": ["⌘"], - "shortcuts": ["⌫"], - "text": "shortcuts.editing.operations.delete" - } - ] - } - ] - }, - { - "tab": "tools", - "text": "shortcuts.tools.title", - "columns": [ - { - "rows": [ - { - "section": "info", - "text": "shortcuts.tools.info.title" - }, - { - "modifiers": ["⌘"], - "shortcuts": ["info_panels.key"], - "text": "shortcuts.tools.info.all" - }, - { - "modifiers": ["⌘", "⇧"], - "shortcuts": ["info_panels.background.key"], - "text": "shortcuts.tools.info.background" - }, - { - "modifiers": ["⌘", "⇧"], - "shortcuts": ["info_panels.history.key"], - "text": "shortcuts.tools.info.history" - }, - { - "modifiers": ["⌘", "⇧"], - "shortcuts": ["info_panels.location.key"], - "text": "shortcuts.tools.info.location" - }, - { - "modifiers": ["⌘", "⇧"], - "shortcuts": ["info_panels.measurement.key"], - "text": "shortcuts.tools.info.measurement" - } - ] - } - ] - } - ] -} +[ + { + "tab": "browsing", + "text": "shortcuts.browsing.title", + "columns": [ + { + "rows": [ + { + "section": "navigation", + "text": "shortcuts.browsing.navigation.title" + }, + { + "shortcuts": ["↓", "↑", "←", "→"], + "text": "shortcuts.browsing.navigation.pan", + "separator": "," + }, + { + "modifiers": ["⌘"], + "shortcuts": ["↓", "↑", "←", "→"], + "text": "shortcuts.browsing.navigation.pan_more", + "separator": "," + }, + { + "shortcuts": ["+", "-"], + "text": "shortcuts.browsing.navigation.zoom", + "separator": "," + }, + { + "modifiers": ["⌘"], + "shortcuts": ["+", "-"], + "text": "shortcuts.browsing.navigation.zoom_more", + "separator": "," + }, + { + "section": "display_options", + "text": "shortcuts.browsing.display_options.title" + }, + { + "shortcuts": ["background.key"], + "text": "shortcuts.browsing.display_options.background" + }, + { + "modifiers": ["⌘"], + "shortcuts": ["background.key"], + "text": "shortcuts.browsing.display_options.background_switch" + }, + { + "shortcuts": ["map_data.key"], + "text": "shortcuts.browsing.display_options.map_data" + }, + { + "shortcuts": ["issues.key"], + "text": "shortcuts.browsing.display_options.issues" + }, + { + "shortcuts": ["preferences.key"], + "text": "shortcuts.browsing.display_options.preferences" + }, + { + "modifiers": ["⌃", "⌘"], + "shortcuts": ["F", "F11"], + "text": "shortcuts.browsing.display_options.fullscreen" + }, + { + "shortcuts": ["sidebar.key", "`", "²"], + "text": "shortcuts.browsing.display_options.sidebar" + }, + { + "shortcuts": ["area_fill.wireframe.key"], + "text": "shortcuts.browsing.display_options.wireframe" + }, + { + "modifiers": ["⌥"], + "shortcuts": ["area_fill.wireframe.key"], + "text": "shortcuts.browsing.display_options.osm_data" + }, + { + "shortcuts": ["background.minimap.key"], + "text": "shortcuts.browsing.display_options.minimap" + }, + { + "shortcuts": ["map_data.highlight_edits.key"], + "text": "shortcuts.browsing.display_options.highlight_edits" + } + ] + }, + { + "rows": [ + { + "section": "help", + "text": "shortcuts.browsing.help.title" + }, + { + "shortcuts": ["help.key"], + "text": "shortcuts.browsing.help.help" + }, + { + "shortcuts": ["shortcuts.toggle.key", "?"], + "text": "shortcuts.browsing.help.keyboard" + }, + { + "section": "selecting", + "text": "shortcuts.browsing.selecting.title" + }, + { + "shortcuts": ["Left-click"], + "text": "shortcuts.browsing.selecting.select_one" + }, + { + "modifiers": ["⇧"], + "shortcuts": ["Left-click"], + "text": "shortcuts.browsing.selecting.select_multi" + }, + { + "modifiers": ["⇧"], + "shortcuts": ["Left-click"], + "gesture": "shortcuts.gesture.drag", + "text": "shortcuts.browsing.selecting.lasso" + }, + { + "modifiers": ["⌘"], + "shortcuts": ["F"], + "text": "shortcuts.browsing.selecting.search" + }, + { + "section": "with_selected", + "text": "shortcuts.browsing.with_selected.title" + }, + { + "shortcuts": ["Right-click", "shortcuts.key.space"], + "text": "shortcuts.browsing.with_selected.edit_menu" + }, + { + "shortcuts": ["inspector.zoom_to.key"], + "text": "shortcuts.browsing.with_selected.zoom_to" + }, + { + "section": "vertex_selected", + "text": "shortcuts.browsing.vertex_selected.title" + }, + { + "shortcuts": ["[", "↖"], + "text": "shortcuts.browsing.vertex_selected.previous" + }, + { + "shortcuts": ["]", "↘"], + "text": "shortcuts.browsing.vertex_selected.next" + }, + { + "shortcuts": ["{", "⇞"], + "text": "shortcuts.browsing.vertex_selected.first" + }, + { + "shortcuts": ["}", "⇟"], + "text": "shortcuts.browsing.vertex_selected.last" + }, + { + "shortcuts": ["\\", "shortcuts.key.pause"], + "text": "shortcuts.browsing.vertex_selected.change_parent" + } + ] + } + ] + }, + { + "tab": "editing", + "text": "shortcuts.editing.title", + "columns": [ + { + "rows": [ + { + "section": "drawing", + "text": "shortcuts.editing.drawing.title" + }, + { + "shortcuts": ["1"], + "text": "shortcuts.editing.drawing.add_point" + }, + { + "shortcuts": ["2"], + "text": "shortcuts.editing.drawing.add_line" + }, + { + "shortcuts": ["3"], + "text": "shortcuts.editing.drawing.add_area" + }, + { + "shortcuts": ["modes.add_note.key"], + "text": "shortcuts.editing.drawing.add_note" + }, + { + "shortcuts": ["Left-click", "shortcuts.key.space"], + "text": "shortcuts.editing.drawing.place_point" + }, + { + "shortcuts": ["⌥"], + "text": "shortcuts.editing.drawing.disable_snap" + }, + { + "shortcuts": ["↵", "⎋"], + "text": "shortcuts.editing.drawing.stop_line" + }, + { + "section": "commands", + "text": "shortcuts.editing.commands.title" + }, + { + "modifiers": ["⌘"], + "shortcuts": ["C"], + "text": "shortcuts.editing.commands.copy" + }, + { + "modifiers": ["⌘"], + "shortcuts": ["V"], + "text": "shortcuts.editing.commands.paste" + }, + { + "modifiers": ["⌘"], + "shortcuts": ["Z"], + "text": "shortcuts.editing.commands.undo" + }, + { + "modifiers": ["⌘", "⇧"], + "shortcuts": ["Z"], + "text": "shortcuts.editing.commands.redo" + }, + { + "modifiers": ["⌘"], + "shortcuts": ["S"], + "text": "shortcuts.editing.commands.save" + } + ] + }, + { + "rows": [ + { + "section": "operations", + "text": "shortcuts.editing.operations.title" + }, + { + "shortcuts": ["operations.continue.key"], + "text": "shortcuts.editing.operations.continue_line" + }, + { + "shortcuts": ["operations.merge.key"], + "text": "shortcuts.editing.operations.merge" + }, + { + "shortcuts": ["operations.disconnect.key"], + "text": "shortcuts.editing.operations.disconnect" + }, + { + "shortcuts": ["operations.extract.key"], + "text": "shortcuts.editing.operations.extract" + }, + { + "shortcuts": ["operations.split.key"], + "text": "shortcuts.editing.operations.split" + }, + { + "shortcuts": ["operations.reverse.key"], + "text": "shortcuts.editing.operations.reverse" + }, + { + "shortcuts": ["operations.move.key"], + "text": "shortcuts.editing.operations.move" + }, + { + "shortcuts": ["operations.rotate.key"], + "text": "shortcuts.editing.operations.rotate" + }, + { + "shortcuts": ["operations.orthogonalize.key"], + "text": "shortcuts.editing.operations.orthogonalize" + }, + { + "shortcuts": ["operations.straighten.key"], + "text": "shortcuts.editing.operations.straighten" + }, + { + "shortcuts": ["operations.circularize.key"], + "text": "shortcuts.editing.operations.circularize" + }, + { + "shortcuts": ["operations.reflect.key.long"], + "text": "shortcuts.editing.operations.reflect_long" + }, + { + "shortcuts": ["operations.reflect.key.short"], + "text": "shortcuts.editing.operations.reflect_short" + }, + { + "modifiers": ["⌘"], + "shortcuts": ["⌫"], + "text": "shortcuts.editing.operations.delete" + } + ] + } + ] + }, + { + "tab": "tools", + "text": "shortcuts.tools.title", + "columns": [ + { + "rows": [ + { + "section": "info", + "text": "shortcuts.tools.info.title" + }, + { + "modifiers": ["⌘"], + "shortcuts": ["info_panels.key"], + "text": "shortcuts.tools.info.all" + }, + { + "modifiers": ["⌘", "⇧"], + "shortcuts": ["info_panels.background.key"], + "text": "shortcuts.tools.info.background" + }, + { + "modifiers": ["⌘", "⇧"], + "shortcuts": ["info_panels.history.key"], + "text": "shortcuts.tools.info.history" + }, + { + "modifiers": ["⌘", "⇧"], + "shortcuts": ["info_panels.location.key"], + "text": "shortcuts.tools.info.location" + }, + { + "modifiers": ["⌘", "⇧"], + "shortcuts": ["info_panels.measurement.key"], + "text": "shortcuts.tools.info.measurement" + } + ] + } + ] + } +] diff --git a/data/territory-languages.json b/data/territory-languages.json deleted file mode 100644 index 27679df98..000000000 --- a/data/territory-languages.json +++ /dev/null @@ -1,260 +0,0 @@ -{ - "dataTerritoryLanguages": { - "ac": ["en"], - "ad": ["ca", "es", "fr"], - "ae": ["ar", "en", "ml", "ps", "bal", "fa"], - "af": ["fa", "ps", "haz", "uz-Arab", "tk", "prd", "bal", "bgn", "ug", "kk-Arab"], - "ag": ["en", "pt"], - "ai": ["en"], - "al": ["sq", "el", "mk"], - "am": ["hy", "ku", "az"], - "ao": ["pt", "umb", "kmb", "ln"], - "aq": ["und"], - "ar": ["es", "en", "cy", "gn"], - "as": ["sm", "en"], - "at": ["de", "bar", "en", "fr", "it", "hr", "sl", "hu"], - "au": ["en", "zh-Hant", "it", "wbp"], - "aw": ["nl", "pap", "en"], - "ax": ["sv"], - "az": ["az", "az-Cyrl", "tly", "ku", "ttt", "tkr"], - "ba": ["bs", "bs-Cyrl", "en", "hr", "sr", "sr-Latn"], - "bb": ["en"], - "bd": ["bn", "en", "rkt", "syl", "ccp", "my", "grt", "mro", "mni"], - "be": ["en", "nl", "fr", "de", "vls", "wa"], - "bf": ["mos", "dyu", "fr", "ff", "ff-Adlm"], - "bg": ["bg", "en", "ru", "tr", "de"], - "bh": ["ar", "ml"], - "bi": ["rn", "fr", "sw", "en"], - "bj": ["fr", "fon", "yo"], - "bl": ["fr"], - "bm": ["en"], - "bn": ["ms", "zh-Hant", "ms-Arab", "en"], - "bo": ["es", "qu", "ay", "gn", "aro"], - "bq": ["pap", "nl"], - "br": ["pt", "en", "de", "it", "ja", "es", "ko", "kgp", "gub", "yrl", "xav"], - "bs": ["en"], - "bt": ["dz", "ne", "tsj", "en", "lep"], - "bv": ["und"], - "bw": ["en", "tn", "af"], - "by": ["be", "ru"], - "bz": ["en", "es"], - "ca": ["en", "fr", "it", "de", "pdt", "cr", "crk", "yi", "iu", "iu-Latn", "moe", "crj", "atj", "crl", "csw", "crm", "ikt", "moh", "dgr", "den", "scs", "nsk", "chp", "gwi"], - "cc": ["ms-Arab", "en"], - "cd": ["sw", "lua", "fr", "ln", "lu", "kg", "lol", "rw"], - "cf": ["fr", "sg", "ln"], - "cg": ["fr", "ln"], - "ch": ["de", "gsw", "en", "fr", "it", "lmo", "pt", "rm", "rmo", "wae"], - "ci": ["fr", "bci", "sef", "dnj", "kfo", "bqv"], - "ck": ["en"], - "cl": ["es", "en", "arn"], - "cm": ["fr", "en", "bum", "ff", "ewo", "ybb", "bbj", "nnh", "bkm", "bas", "bax", "byv", "mua", "maf", "bfd", "bss", "kkj", "dua", "mgo", "ar", "jgo", "ksf", "agq", "ha-Arab", "nmg", "yav", "ff-Adlm"], - "cn": ["zh", "wuu", "yue-Hans", "hsn", "hak", "nan", "gan", "ii", "ug", "za", "mn-Mong", "bo", "ko", "kk-Arab", "lis", "ky-Arab", "nxq", "khb", "tdd", "lcp", "en", "ru", "vi", "uz-Cyrl", "lzh"], - "co": ["es", "guc"], - "cp": ["und"], - "cr": ["es"], - "cu": ["es"], - "cv": ["kea", "pt"], - "cw": ["pap", "nl", "es"], - "cx": ["en"], - "cy": ["el", "en", "tr", "fr", "hy", "ar"], - "cz": ["cs", "en", "sk", "de", "pl"], - "de": ["de", "en", "fr", "bar", "nds", "nl", "it", "es", "ru", "vmf", "tr", "gsw", "da", "swg", "hr", "ku", "el", "ksh", "pl", "hsb", "frr", "dsb", "frs", "stq", "pfl"], - "dg": ["en"], - "dj": ["aa", "so", "ar", "fr"], - "dk": ["da", "en", "de", "sv", "fo", "kl", "jut"], - "dm": ["en"], - "do": ["es", "en"], - "dz": ["arq", "ar", "fr", "kab", "en"], - "ea": ["es"], - "ec": ["es", "qu", "qug"], - "ee": ["et", "ru", "en", "fi", "vro"], - "eg": ["ar", "arz", "en", "el"], - "eh": ["ar"], - "er": ["ti", "en", "tig", "ar", "aa", "ssy", "byn"], - "es": ["es", "en", "ca", "gl", "eu", "ast", "ext", "an"], - "et": ["en", "am", "om", "so", "ti", "sid", "wal", "aa"], - "fi": ["fi", "en", "sv", "de", "ru", "et", "rmf", "se", "smn", "sms"], - "fj": ["en", "hi", "hif", "fj", "rtm"], - "fk": ["en"], - "fm": ["en", "chk", "pon", "kos", "yap", "uli"], - "fo": ["fo"], - "fr": ["fr", "en", "es", "de", "oc", "it", "pt", "pcd", "gsw", "br", "co", "ca", "eu", "nl", "frp", "ia"], - "ga": ["fr", "puu"], - "gb": ["en", "fr", "de", "sco", "pa", "cy", "bn", "zh-Hant", "syl", "el", "it", "ks", "gd", "yi", "ml", "ga", "kw"], - "gd": ["en"], - "ge": ["ka", "xmf", "ru", "hy", "ab", "os", "ku"], - "gf": ["fr", "gcr", "zh-Hant"], - "gg": ["en"], - "gh": ["ak", "en", "ee", "abr", "gur", "ada", "gaa", "nzi", "ha", "saf", "ff", "ff-Adlm"], - "gi": ["en", "es"], - "gl": ["kl", "da"], - "gm": ["en", "man", "ff", "ff-Adlm"], - "gn": ["fr", "ff", "man-Nkoo", "sus", "nqo", "kpe", "ff-Adlm"], - "gp": ["fr"], - "gq": ["es", "fan", "fr", "bvb", "pt"], - "gr": ["el", "en", "fr", "de", "pnt", "mk", "tr", "bg", "sq", "tsd"], - "gs": ["und"], - "gt": ["es", "quc"], - "gu": ["en", "ch"], - "gw": ["pt", "knf", "ff", "ff-Adlm"], - "gy": ["en"], - "hk": ["zh-Hant", "yue", "en", "zh"], - "hm": ["und"], - "hn": ["es", "en"], - "hr": ["hr", "en", "it"], - "ht": ["ht", "fr"], - "hu": ["hu", "en", "de", "fr", "ro", "hr", "sk", "sl"], - "ic": ["es"], - "id": ["id", "jv", "su", "mad", "ms-Arab", "min", "bew", "ban", "bug", "bjn", "ace", "sas", "bbc", "zh-Hant", "mak", "ljp", "rej", "gor", "nij", "kge", "aoz", "kvr", "lbw", "gay", "rob", "mdr", "sxn", "sly", "mwv"], - "ie": ["en", "ga", "fr"], - "il": ["he", "en", "ar", "ru", "ro", "yi", "pl", "lad", "hu", "am", "ti", "ml"], - "im": ["en", "gv"], - "in": ["hi", "en", "bn", "te", "mr", "ta", "ur", "gu", "kn", "ml", "or", "pa", "bho", "awa", "as", "bgc", "mag", "mai", "mwr", "hne", "dcc", "bjj", "ne", "sat", "wtm", "rkt", "ks", "kok", "gom", "swv", "gbm", "lmn", "sd", "gon", "kfy", "doi", "kru", "sck", "wbq", "xnr", "khn", "tcy", "wbr", "brx", "noe", "bhb", "mni", "raj", "hoc", "mtr", "unr", "bhi", "hoj", "kha", "kfr", "grt", "unx", "bfy", "srx", "saz", "ccp", "sd-Deva", "bfq", "njo", "ria", "bo", "bpy", "bft", "bra", "lep", "btv", "lif", "lah", "sa", "kht", "dv", "dz"], - "io": ["en"], - "iq": ["ar", "en", "ckb", "az-Arab", "fa", "lrc", "syr"], - "ir": ["fa", "az-Arab", "mzn", "glk", "ckb", "sdh", "tk", "lrc", "ar", "bal", "rmt", "bqi", "luz", "lki", "bgn", "prd", "hy", "ps", "ka", "gbz", "kk-Arab"], - "is": ["is", "da"], - "it": ["it", "en", "fr", "sc", "de", "vec", "nap", "lij", "scn", "sdc", "sl", "fur", "egl", "ca", "el", "lmo", "pms", "hr", "rgn"], - "je": ["en"], - "jm": ["en", "jam"], - "jo": ["ar", "en"], - "jp": ["ja", "ryu", "ko"], - "ke": ["sw", "en", "ki", "luy", "luo", "kam", "kln", "guz", "mer", "mas", "ebu", "so", "dav", "teo", "pko", "om", "saq", "ar", "pa", "gu"], - "kg": ["ky", "ru"], - "kh": ["km", "cja", "kdt"], - "ki": ["en", "gil"], - "km": ["ar", "fr", "zdj", "wni"], - "kn": ["en"], - "kp": ["ko"], - "kr": ["ko"], - "kw": ["ar"], - "ky": ["en"], - "kz": ["ru", "kk", "en", "de", "ug-Cyrl"], - "la": ["lo", "kjg", "kdt"], - "lb": ["ar", "en", "hy", "ku-Arab", "fr"], - "lc": ["en"], - "li": ["de", "gsw", "wae"], - "lk": ["si", "ta", "en"], - "lr": ["en", "kpe", "vai", "men", "ff", "ff-Adlm", "vai-Latn"], - "ls": ["st", "en", "zu", "ss", "xh"], - "lt": ["lt", "ru", "en", "de", "sgs"], - "lu": ["fr", "lb", "de", "en", "pt"], - "lv": ["lv", "en", "ru", "ltg"], - "ly": ["ar"], - "ma": ["ary", "ar", "zgh", "fr", "en", "tzm", "shi", "shi-Latn", "rif", "rif-Latn", "es"], - "mc": ["fr"], - "md": ["ro", "uk", "bg", "gag", "ru"], - "me": ["sr-Latn", "sq", "sr"], - "mf": ["fr"], - "mg": ["mg", "fr", "en"], - "mh": ["en", "mh"], - "mk": ["mk", "sq", "tr"], - "ml": ["bm", "fr", "ffm", "snk", "mwk", "ses", "tmh", "bm-Nkoo", "khq", "dtm", "kao", "ar", "bmq", "bze"], - "mm": ["my", "shn", "kac", "mnw", "kht"], - "mn": ["mn", "kk-Arab", "zh", "ru", "ug-Cyrl"], - "mo": ["zh-Hant", "pt", "zh", "en"], - "mp": ["en", "ch"], - "mq": ["fr"], - "mr": ["ar", "fr", "ff", "wo", "ff-Adlm"], - "ms": ["en"], - "mt": ["mt", "en", "it", "fr"], - "mu": ["mfe", "en", "bho", "ur", "fr", "ta"], - "mv": ["dv"], - "mw": ["en", "ny", "tum", "tog", "zu"], - "mx": ["es", "en", "yua", "nhe", "nhw", "maz", "nch", "sei"], - "my": ["ms", "en", "zh-Hant", "ta", "iba", "jv", "zmi", "dtp", "ml", "bug", "bjn"], - "mz": ["pt", "vmw", "ndc", "ts", "ngl", "seh", "mgh", "rng", "ny", "yao", "sw", "zu"], - "na": ["af", "kj", "ng", "naq", "hz", "en", "de", "tn"], - "nc": ["fr"], - "ne": ["ha", "fr", "dje", "fuq", "tmh", "ar", "twq", "ff", "ff-Adlm"], - "nf": ["en"], - "ng": ["en", "pcm", "ha", "ig", "yo", "fuv", "tiv", "efi", "ibb", "ha-Arab", "bin", "kaj", "kcg", "ar", "cch", "amo", "ff", "ff-Adlm"], - "ni": ["es"], - "nl": ["nl", "en", "de", "fr", "nds", "li", "fy", "gos", "id", "zea", "rif-Latn", "tr"], - "no": ["nb", "nn", "se"], - "np": ["ne", "mai", "bho", "new", "jml", "en", "dty", "awa", "thl", "bap", "tdg", "thr", "lif", "mgp", "thq", "mrd", "bfy", "xsr", "rjs", "taj", "hi", "gvr", "bo", "tkt", "tdh", "bn", "unr-Deva", "lep"], - "nr": ["en", "na"], - "nu": ["en", "niu"], - "nz": ["en", "mi"], - "om": ["ar", "bal", "fa"], - "pa": ["es", "en", "zh-Hant"], - "pe": ["es", "qu", "ay"], - "pf": ["fr", "ty", "zh-Hant"], - "pg": ["tpi", "en", "ho"], - "ph": ["en", "fil", "es", "ceb", "ilo", "hil", "bik", "war", "bhk", "pam", "pag", "mdh", "tsg", "zh-Hant", "cps", "krj", "bto", "hnn", "tbw", "bku"], - "pk": ["ur", "pa-Arab", "en", "lah", "ps", "sd", "skr", "bal", "brh", "hno", "fa", "bgn", "hnd", "tg-Arab", "gju", "bft", "kvx", "khw", "mvy", "gjk", "kxp", "ks", "btv"], - "pl": ["pl", "en", "de", "ru", "szl", "be", "uk", "csb", "sli", "lt"], - "pm": ["fr", "en"], - "pn": ["en"], - "pr": ["es", "en"], - "ps": ["ar"], - "pt": ["pt", "en", "fr", "es", "gl"], - "pw": ["pau", "en"], - "py": ["gn", "es", "de"], - "qa": ["ar", "fa", "ml"], - "re": ["fr", "rcf", "ta"], - "ro": ["ro", "en", "fr", "es", "hu", "de", "tr", "sr-Latn", "bg", "el", "pl"], - "rs": ["sr", "sr-Latn", "sq", "hu", "ro", "hr", "sk", "uk"], - "ru": ["ru", "tt", "ba", "cv", "hy", "ce", "av", "udm", "chm", "os", "sah", "kbd", "myv", "dar", "bua", "mdf", "kum", "kv", "lez", "krc", "inh", "tyv", "az-Cyrl", "ady", "krl", "lbe", "koi", "mrj", "alt", "fi", "sr-Latn", "vep", "mn", "izh", "cu", "vot"], - "rw": ["rw", "en", "fr"], - "sa": ["ar", "ars"], - "sb": ["en", "rug"], - "sc": ["crs", "fr", "en"], - "sd": ["ar", "en", "bej", "fvr", "ha-Arab", "mls", "fia", "zag"], - "se": ["sv", "en", "fi", "fit", "se", "rmu", "yi", "smj", "sma", "ia"], - "sg": ["en", "zh", "ms", "ta", "ml", "pa"], - "sh": ["en"], - "si": ["sl", "hr", "en", "de", "hu", "it"], - "sj": ["nb", "ru"], - "sk": ["sk", "cs", "en", "de", "hu", "uk", "pl"], - "sl": ["kri", "en", "men", "tem", "ff", "ff-Adlm"], - "sm": ["it", "eo"], - "sn": ["wo", "fr", "ff", "srr", "dyo", "sav", "mfv", "bjt", "snf", "knf", "bsc", "mey", "tnr", "ff-Adlm"], - "so": ["so", "ar", "sw", "om"], - "sr": ["nl", "srn", "zh-Hant"], - "ss": ["ar", "en", "nus"], - "st": ["pt"], - "sv": ["es"], - "sx": ["en", "es", "vic", "nl"], - "sy": ["ar", "ku", "fr", "hy", "syr"], - "sz": ["en", "ss", "zu", "ts"], - "ta": ["en"], - "tc": ["en"], - "td": ["fr", "ar"], - "tf": ["fr"], - "tg": ["fr", "ee", "ife"], - "th": ["th", "en", "tts", "nod", "sou", "mfa", "zh-Hant", "kxm", "kdt", "mnw", "shn", "lcp", "lwl"], - "tj": ["tg", "ru", "fa", "ar"], - "tk": ["en", "tkl"], - "tl": ["pt", "tet"], - "tm": ["tk", "ru", "uz", "ku"], - "tn": ["aeb", "ar", "fr"], - "to": ["to", "en"], - "tr": ["tr", "en", "ku", "zza", "kbd", "az", "az-Arab", "ar", "bgx", "bg", "ady", "kiu", "hy", "ka", "lzz", "sr-Latn", "sq", "ab", "el", "tru", "uz", "ky-Latn", "kk"], - "tt": ["en", "es"], - "tv": ["tvl", "en"], - "tw": ["zh-Hant", "trv"], - "tz": ["sw", "en", "suk", "nym", "kde", "bez", "ksb", "mas", "mgy", "asa", "lag", "jmc", "rof", "vun", "rwk", "sbp"], - "ua": ["uk", "ru", "pl", "yi", "rue", "be", "crh", "ro", "bg", "tr", "hu", "el"], - "ug": ["sw", "lg", "nyn", "cgg", "xog", "en", "teo", "laj", "ach", "myx", "rw", "ttj", "hi"], - "um": ["en"], - "us": ["en", "es", "zh-Hant", "fr", "de", "fil", "it", "vi", "ko", "ru", "nv", "yi", "pdc", "haw", "frc", "chr", "esu", "dak", "cho", "lkt", "ik", "mus", "cic", "osa"], - "uy": ["es"], - "uz": ["uz", "uz-Cyrl", "ru", "kaa", "tr"], - "va": ["it", "la"], - "vc": ["en"], - "ve": ["es"], - "vg": ["en"], - "vi": ["en"], - "vn": ["vi", "zh-Hant", "cjm"], - "vu": ["bi", "en", "fr"], - "wf": ["wls", "fr", "fud"], - "ws": ["sm", "en"], - "xk": ["sq", "aln", "sr", "sr-Latn"], - "ye": ["ar", "en"], - "yt": ["swb", "fr", "buc", "sw"], - "za": ["en", "zu", "xh", "af", "nso", "tn", "st", "ts", "ss", "ve", "hi", "nr", "sw"], - "zm": ["bem", "en", "ny", "loz"], - "zw": ["sn", "en", "nd", "mxc", "ndc", "kck", "ny", "ve", "tn"] - } -} \ No newline at end of file diff --git a/data/territory_languages.json b/data/territory_languages.json new file mode 100644 index 000000000..91dc8350a --- /dev/null +++ b/data/territory_languages.json @@ -0,0 +1,258 @@ +{ + "ac": ["en"], + "ad": ["ca", "es", "fr"], + "ae": ["ar", "en", "ml", "ps", "bal", "fa"], + "af": ["fa", "ps", "haz", "uz-Arab", "tk", "prd", "bal", "bgn", "ug", "kk-Arab"], + "ag": ["en", "pt"], + "ai": ["en"], + "al": ["sq", "el", "mk"], + "am": ["hy", "ku", "az"], + "ao": ["pt", "umb", "kmb", "ln"], + "aq": ["und"], + "ar": ["es", "en", "cy", "gn"], + "as": ["sm", "en"], + "at": ["de", "bar", "en", "fr", "it", "hr", "sl", "hu"], + "au": ["en", "zh-Hant", "it", "wbp"], + "aw": ["nl", "pap", "en"], + "ax": ["sv"], + "az": ["az", "az-Cyrl", "tly", "ku", "ttt", "tkr"], + "ba": ["bs", "bs-Cyrl", "en", "hr", "sr", "sr-Latn"], + "bb": ["en"], + "bd": ["bn", "en", "rkt", "syl", "ccp", "my", "grt", "mro", "mni"], + "be": ["en", "nl", "fr", "de", "vls", "wa"], + "bf": ["mos", "dyu", "fr", "ff", "ff-Adlm"], + "bg": ["bg", "en", "ru", "tr", "de"], + "bh": ["ar", "ml"], + "bi": ["rn", "fr", "sw", "en"], + "bj": ["fr", "fon", "yo"], + "bl": ["fr"], + "bm": ["en"], + "bn": ["ms", "zh-Hant", "ms-Arab", "en"], + "bo": ["es", "qu", "ay", "gn", "aro"], + "bq": ["pap", "nl"], + "br": ["pt", "en", "de", "it", "ja", "es", "ko", "kgp", "gub", "yrl", "xav"], + "bs": ["en"], + "bt": ["dz", "ne", "tsj", "en", "lep"], + "bv": ["und"], + "bw": ["en", "tn", "af"], + "by": ["be", "ru"], + "bz": ["en", "es"], + "ca": ["en", "fr", "it", "de", "pdt", "cr", "crk", "yi", "iu", "iu-Latn", "moe", "crj", "atj", "crl", "csw", "crm", "ikt", "moh", "dgr", "den", "scs", "nsk", "chp", "gwi"], + "cc": ["ms-Arab", "en"], + "cd": ["sw", "lua", "fr", "ln", "lu", "kg", "lol", "rw"], + "cf": ["fr", "sg", "ln"], + "cg": ["fr", "ln"], + "ch": ["de", "gsw", "en", "fr", "it", "lmo", "pt", "rm", "rmo", "wae"], + "ci": ["fr", "bci", "sef", "dnj", "kfo", "bqv"], + "ck": ["en"], + "cl": ["es", "en", "arn"], + "cm": ["fr", "en", "bum", "ff", "ewo", "ybb", "bbj", "nnh", "bkm", "bas", "bax", "byv", "mua", "maf", "bfd", "bss", "kkj", "dua", "mgo", "ar", "jgo", "ksf", "agq", "ha-Arab", "nmg", "yav", "ff-Adlm"], + "cn": ["zh", "wuu", "yue-Hans", "hsn", "hak", "nan", "gan", "ii", "ug", "za", "mn-Mong", "bo", "ko", "kk-Arab", "lis", "ky-Arab", "nxq", "khb", "tdd", "lcp", "en", "ru", "vi", "uz-Cyrl", "lzh"], + "co": ["es", "guc"], + "cp": ["und"], + "cr": ["es"], + "cu": ["es"], + "cv": ["kea", "pt"], + "cw": ["pap", "nl", "es"], + "cx": ["en"], + "cy": ["el", "en", "tr", "fr", "hy", "ar"], + "cz": ["cs", "en", "sk", "de", "pl"], + "de": ["de", "en", "fr", "bar", "nds", "nl", "it", "es", "ru", "vmf", "tr", "gsw", "da", "swg", "hr", "ku", "el", "ksh", "pl", "hsb", "frr", "dsb", "frs", "stq", "pfl"], + "dg": ["en"], + "dj": ["aa", "so", "ar", "fr"], + "dk": ["da", "en", "de", "sv", "fo", "kl", "jut"], + "dm": ["en"], + "do": ["es", "en"], + "dz": ["arq", "ar", "fr", "kab", "en"], + "ea": ["es"], + "ec": ["es", "qu", "qug"], + "ee": ["et", "ru", "en", "fi", "vro"], + "eg": ["ar", "arz", "en", "el"], + "eh": ["ar"], + "er": ["ti", "en", "tig", "ar", "aa", "ssy", "byn"], + "es": ["es", "en", "ca", "gl", "eu", "ast", "ext", "an"], + "et": ["en", "am", "om", "so", "ti", "sid", "wal", "aa"], + "fi": ["fi", "en", "sv", "de", "ru", "et", "rmf", "se", "smn", "sms"], + "fj": ["en", "hi", "hif", "fj", "rtm"], + "fk": ["en"], + "fm": ["en", "chk", "pon", "kos", "yap", "uli"], + "fo": ["fo"], + "fr": ["fr", "en", "es", "de", "oc", "it", "pt", "pcd", "gsw", "br", "co", "ca", "eu", "nl", "frp", "ia"], + "ga": ["fr", "puu"], + "gb": ["en", "fr", "de", "sco", "pa", "cy", "bn", "zh-Hant", "syl", "el", "it", "ks", "gd", "yi", "ml", "ga", "kw"], + "gd": ["en"], + "ge": ["ka", "xmf", "ru", "hy", "ab", "os", "ku"], + "gf": ["fr", "gcr", "zh-Hant"], + "gg": ["en"], + "gh": ["ak", "en", "ee", "abr", "gur", "ada", "gaa", "nzi", "ha", "saf", "ff", "ff-Adlm"], + "gi": ["en", "es"], + "gl": ["kl", "da"], + "gm": ["en", "man", "ff", "ff-Adlm"], + "gn": ["fr", "ff", "man-Nkoo", "sus", "nqo", "kpe", "ff-Adlm"], + "gp": ["fr"], + "gq": ["es", "fan", "fr", "bvb", "pt"], + "gr": ["el", "en", "fr", "de", "pnt", "mk", "tr", "bg", "sq", "tsd"], + "gs": ["und"], + "gt": ["es", "quc"], + "gu": ["en", "ch"], + "gw": ["pt", "knf", "ff", "ff-Adlm"], + "gy": ["en"], + "hk": ["zh-Hant", "yue", "en", "zh"], + "hm": ["und"], + "hn": ["es", "en"], + "hr": ["hr", "en", "it"], + "ht": ["ht", "fr"], + "hu": ["hu", "en", "de", "fr", "ro", "hr", "sk", "sl"], + "ic": ["es"], + "id": ["id", "jv", "su", "mad", "ms-Arab", "min", "bew", "ban", "bug", "bjn", "ace", "sas", "bbc", "zh-Hant", "mak", "ljp", "rej", "gor", "nij", "kge", "aoz", "kvr", "lbw", "gay", "rob", "mdr", "sxn", "sly", "mwv"], + "ie": ["en", "ga", "fr"], + "il": ["he", "en", "ar", "ru", "ro", "yi", "pl", "lad", "hu", "am", "ti", "ml"], + "im": ["en", "gv"], + "in": ["hi", "en", "bn", "te", "mr", "ta", "ur", "gu", "kn", "ml", "or", "pa", "bho", "awa", "as", "bgc", "mag", "mai", "mwr", "hne", "dcc", "bjj", "ne", "sat", "wtm", "rkt", "ks", "kok", "gom", "swv", "gbm", "lmn", "sd", "gon", "kfy", "doi", "kru", "sck", "wbq", "xnr", "khn", "tcy", "wbr", "brx", "noe", "bhb", "mni", "raj", "hoc", "mtr", "unr", "bhi", "hoj", "kha", "kfr", "grt", "unx", "bfy", "srx", "saz", "ccp", "sd-Deva", "bfq", "njo", "ria", "bo", "bpy", "bft", "bra", "lep", "btv", "lif", "lah", "sa", "kht", "dv", "dz"], + "io": ["en"], + "iq": ["ar", "en", "ckb", "az-Arab", "fa", "lrc", "syr"], + "ir": ["fa", "az-Arab", "mzn", "glk", "ckb", "sdh", "tk", "lrc", "ar", "bal", "rmt", "bqi", "luz", "lki", "bgn", "prd", "hy", "ps", "ka", "gbz", "kk-Arab"], + "is": ["is", "da"], + "it": ["it", "en", "fr", "sc", "de", "vec", "nap", "lij", "scn", "sdc", "sl", "fur", "egl", "ca", "el", "lmo", "pms", "hr", "rgn"], + "je": ["en"], + "jm": ["en", "jam"], + "jo": ["ar", "en"], + "jp": ["ja", "ryu", "ko"], + "ke": ["sw", "en", "ki", "luy", "luo", "kam", "kln", "guz", "mer", "mas", "ebu", "so", "dav", "teo", "pko", "om", "saq", "ar", "pa", "gu"], + "kg": ["ky", "ru"], + "kh": ["km", "cja", "kdt"], + "ki": ["en", "gil"], + "km": ["ar", "fr", "zdj", "wni"], + "kn": ["en"], + "kp": ["ko"], + "kr": ["ko"], + "kw": ["ar"], + "ky": ["en"], + "kz": ["ru", "kk", "en", "de", "ug-Cyrl"], + "la": ["lo", "kjg", "kdt"], + "lb": ["ar", "en", "hy", "ku-Arab", "fr"], + "lc": ["en"], + "li": ["de", "gsw", "wae"], + "lk": ["si", "ta", "en"], + "lr": ["en", "kpe", "vai", "men", "ff", "ff-Adlm", "vai-Latn"], + "ls": ["st", "en", "zu", "ss", "xh"], + "lt": ["lt", "ru", "en", "de", "sgs"], + "lu": ["fr", "lb", "de", "en", "pt"], + "lv": ["lv", "en", "ru", "ltg"], + "ly": ["ar"], + "ma": ["ary", "ar", "zgh", "fr", "en", "tzm", "shi", "shi-Latn", "rif", "rif-Latn", "es"], + "mc": ["fr"], + "md": ["ro", "uk", "bg", "gag", "ru"], + "me": ["sr-Latn", "sq", "sr"], + "mf": ["fr"], + "mg": ["mg", "fr", "en"], + "mh": ["en", "mh"], + "mk": ["mk", "sq", "tr"], + "ml": ["bm", "fr", "ffm", "snk", "mwk", "ses", "tmh", "bm-Nkoo", "khq", "dtm", "kao", "ar", "bmq", "bze"], + "mm": ["my", "shn", "kac", "mnw", "kht"], + "mn": ["mn", "kk-Arab", "zh", "ru", "ug-Cyrl"], + "mo": ["zh-Hant", "pt", "zh", "en"], + "mp": ["en", "ch"], + "mq": ["fr"], + "mr": ["ar", "fr", "ff", "wo", "ff-Adlm"], + "ms": ["en"], + "mt": ["mt", "en", "it", "fr"], + "mu": ["mfe", "en", "bho", "ur", "fr", "ta"], + "mv": ["dv"], + "mw": ["en", "ny", "tum", "tog", "zu"], + "mx": ["es", "en", "yua", "nhe", "nhw", "maz", "nch", "sei"], + "my": ["ms", "en", "zh-Hant", "ta", "iba", "jv", "zmi", "dtp", "ml", "bug", "bjn"], + "mz": ["pt", "vmw", "ndc", "ts", "ngl", "seh", "mgh", "rng", "ny", "yao", "sw", "zu"], + "na": ["af", "kj", "ng", "naq", "hz", "en", "de", "tn"], + "nc": ["fr"], + "ne": ["ha", "fr", "dje", "fuq", "tmh", "ar", "twq", "ff", "ff-Adlm"], + "nf": ["en"], + "ng": ["en", "pcm", "ha", "ig", "yo", "fuv", "tiv", "efi", "ibb", "ha-Arab", "bin", "kaj", "kcg", "ar", "cch", "amo", "ff", "ff-Adlm"], + "ni": ["es"], + "nl": ["nl", "en", "de", "fr", "nds", "li", "fy", "gos", "id", "zea", "rif-Latn", "tr"], + "no": ["nb", "nn", "se"], + "np": ["ne", "mai", "bho", "new", "jml", "en", "dty", "awa", "thl", "bap", "tdg", "thr", "lif", "mgp", "thq", "mrd", "bfy", "xsr", "rjs", "taj", "hi", "gvr", "bo", "tkt", "tdh", "bn", "unr-Deva", "lep"], + "nr": ["en", "na"], + "nu": ["en", "niu"], + "nz": ["en", "mi"], + "om": ["ar", "bal", "fa"], + "pa": ["es", "en", "zh-Hant"], + "pe": ["es", "qu", "ay"], + "pf": ["fr", "ty", "zh-Hant"], + "pg": ["tpi", "en", "ho"], + "ph": ["en", "fil", "es", "ceb", "ilo", "hil", "bik", "war", "bhk", "pam", "pag", "mdh", "tsg", "zh-Hant", "cps", "krj", "bto", "hnn", "tbw", "bku"], + "pk": ["ur", "pa-Arab", "en", "lah", "ps", "sd", "skr", "bal", "brh", "hno", "fa", "bgn", "hnd", "tg-Arab", "gju", "bft", "kvx", "khw", "mvy", "gjk", "kxp", "ks", "btv"], + "pl": ["pl", "en", "de", "ru", "szl", "be", "uk", "csb", "sli", "lt"], + "pm": ["fr", "en"], + "pn": ["en"], + "pr": ["es", "en"], + "ps": ["ar"], + "pt": ["pt", "en", "fr", "es", "gl"], + "pw": ["pau", "en"], + "py": ["gn", "es", "de"], + "qa": ["ar", "fa", "ml"], + "re": ["fr", "rcf", "ta"], + "ro": ["ro", "en", "fr", "es", "hu", "de", "tr", "sr-Latn", "bg", "el", "pl"], + "rs": ["sr", "sr-Latn", "sq", "hu", "ro", "hr", "sk", "uk"], + "ru": ["ru", "tt", "ba", "cv", "hy", "ce", "av", "udm", "chm", "os", "sah", "kbd", "myv", "dar", "bua", "mdf", "kum", "kv", "lez", "krc", "inh", "tyv", "az-Cyrl", "ady", "krl", "lbe", "koi", "mrj", "alt", "fi", "sr-Latn", "vep", "mn", "izh", "cu", "vot"], + "rw": ["rw", "en", "fr"], + "sa": ["ar", "ars"], + "sb": ["en", "rug"], + "sc": ["crs", "fr", "en"], + "sd": ["ar", "en", "bej", "fvr", "ha-Arab", "mls", "fia", "zag"], + "se": ["sv", "en", "fi", "fit", "se", "rmu", "yi", "smj", "sma", "ia"], + "sg": ["en", "zh", "ms", "ta", "ml", "pa"], + "sh": ["en"], + "si": ["sl", "hr", "en", "de", "hu", "it"], + "sj": ["nb", "ru"], + "sk": ["sk", "cs", "en", "de", "hu", "uk", "pl"], + "sl": ["kri", "en", "men", "tem", "ff", "ff-Adlm"], + "sm": ["it", "eo"], + "sn": ["wo", "fr", "ff", "srr", "dyo", "sav", "mfv", "bjt", "snf", "knf", "bsc", "mey", "tnr", "ff-Adlm"], + "so": ["so", "ar", "sw", "om"], + "sr": ["nl", "srn", "zh-Hant"], + "ss": ["ar", "en", "nus"], + "st": ["pt"], + "sv": ["es"], + "sx": ["en", "es", "vic", "nl"], + "sy": ["ar", "ku", "fr", "hy", "syr"], + "sz": ["en", "ss", "zu", "ts"], + "ta": ["en"], + "tc": ["en"], + "td": ["fr", "ar"], + "tf": ["fr"], + "tg": ["fr", "ee", "ife"], + "th": ["th", "en", "tts", "nod", "sou", "mfa", "zh-Hant", "kxm", "kdt", "mnw", "shn", "lcp", "lwl"], + "tj": ["tg", "ru", "fa", "ar"], + "tk": ["en", "tkl"], + "tl": ["pt", "tet"], + "tm": ["tk", "ru", "uz", "ku"], + "tn": ["aeb", "ar", "fr"], + "to": ["to", "en"], + "tr": ["tr", "en", "ku", "zza", "kbd", "az", "az-Arab", "ar", "bgx", "bg", "ady", "kiu", "hy", "ka", "lzz", "sr-Latn", "sq", "ab", "el", "tru", "uz", "ky-Latn", "kk"], + "tt": ["en", "es"], + "tv": ["tvl", "en"], + "tw": ["zh-Hant", "trv"], + "tz": ["sw", "en", "suk", "nym", "kde", "bez", "ksb", "mas", "mgy", "asa", "lag", "jmc", "rof", "vun", "rwk", "sbp"], + "ua": ["uk", "ru", "pl", "yi", "rue", "be", "crh", "ro", "bg", "tr", "hu", "el"], + "ug": ["sw", "lg", "nyn", "cgg", "xog", "en", "teo", "laj", "ach", "myx", "rw", "ttj", "hi"], + "um": ["en"], + "us": ["en", "es", "zh-Hant", "fr", "de", "fil", "it", "vi", "ko", "ru", "nv", "yi", "pdc", "haw", "frc", "chr", "esu", "dak", "cho", "lkt", "ik", "mus", "cic", "osa"], + "uy": ["es"], + "uz": ["uz", "uz-Cyrl", "ru", "kaa", "tr"], + "va": ["it", "la"], + "vc": ["en"], + "ve": ["es"], + "vg": ["en"], + "vi": ["en"], + "vn": ["vi", "zh-Hant", "cjm"], + "vu": ["bi", "en", "fr"], + "wf": ["wls", "fr", "fud"], + "ws": ["sm", "en"], + "xk": ["sq", "aln", "sr", "sr-Latn"], + "ye": ["ar", "en"], + "yt": ["swb", "fr", "buc", "sw"], + "za": ["en", "zu", "xh", "af", "nso", "tn", "st", "ts", "ss", "ve", "hi", "nr", "sw"], + "zm": ["bem", "en", "ny", "loz"], + "zw": ["sn", "en", "nd", "mxc", "ndc", "kck", "ny", "ve", "tn"] +} \ No newline at end of file diff --git a/modules/actions/discard_tags.js b/modules/actions/discard_tags.js index 555d45c93..073baf98e 100644 --- a/modules/actions/discard_tags.js +++ b/modules/actions/discard_tags.js @@ -1,30 +1,29 @@ -import { dataDiscarded } from '../../data'; -export function actionDiscardTags(difference) { +export function actionDiscardTags(difference, discardTags) { + discardTags = discardTags || {}; - return function(graph) { - function discardTags(entity) { - var tags = {}; - var keys = Object.keys(entity.tags); - var discarded = false; + return (graph) => { + difference.modified().forEach(checkTags); + difference.created().forEach(checkTags); + return graph; - for (var i = 0; i < keys.length; i++) { - var k = keys[i]; - if (dataDiscarded[k] || !entity.tags[k]) { - discarded = true; - } else { - tags[k] = entity.tags[k]; - } - } + function checkTags(entity) { + const keys = Object.keys(entity.tags); + let didDiscard = false; + let tags = {}; - if (discarded) { - graph = graph.replace(entity.update({ tags: tags })); - } + for (let i = 0; i < keys.length; i++) { + const k = keys[i]; + if (discardTags[k] || !entity.tags[k]) { + didDiscard = true; + } else { + tags[k] = entity.tags[k]; } + } + if (didDiscard) { + graph = graph.replace(entity.update({ tags: tags })); + } + } - difference.modified().forEach(discardTags); - difference.created().forEach(discardTags); - - return graph; - }; + }; } diff --git a/modules/actions/merge_remote_changes.js b/modules/actions/merge_remote_changes.js index 8aff25592..0b6587b38 100644 --- a/modules/actions/merge_remote_changes.js +++ b/modules/actions/merge_remote_changes.js @@ -4,11 +4,11 @@ import { diff3Merge } from 'node-diff3'; import { t } from '../util/locale'; import { actionDeleteMultiple } from './delete_multiple'; import { osmEntity } from '../osm'; -import { dataDiscarded } from '../../data'; import { utilArrayUnion, utilArrayUniq } from '../util'; -export function actionMergeRemoteChanges(id, localGraph, remoteGraph, formatUser) { +export function actionMergeRemoteChanges(id, localGraph, remoteGraph, discardTags, formatUser) { + discardTags = discardTags || {}; var _option = 'safe'; // 'safe', 'force_local', 'force_remote' var _conflicts = []; @@ -167,7 +167,7 @@ export function actionMergeRemoteChanges(id, localGraph, remoteGraph, formatUser var a = target.tags || {}; var b = remote.tags || {}; var keys = utilArrayUnion(utilArrayUnion(Object.keys(o), Object.keys(a)), Object.keys(b)) - .filter(function(k) { return !dataDiscarded[k]; }); + .filter(function(k) { return !discardTags[k]; }); var tags = Object.assign({}, a); // shallow copy var changed = false; diff --git a/modules/core/data.js b/modules/core/data.js index e244ca216..a47412232 100644 --- a/modules/core/data.js +++ b/modules/core/data.js @@ -9,7 +9,16 @@ export function coreData(context) { let _module = {}; let _inflight = {}; let _fileMap = { - 'intro_graph': 'data/intro_graph.json' + 'address_formats': 'data/address_formats.min.json', + 'deprecated': 'data/deprecated.min.json', + 'discarded': 'data/discarded.min.json', + 'imagery': 'data/imagery.min.json', + 'intro_graph': 'data/intro_graph.min.json', + 'languages': 'data/languages.min.json', + 'locales': 'data/locales.min.json', + 'phone_formats': 'data/phone_formats.min.json', + 'shortcuts': 'data/shortcuts.min.json', + 'territory_languages': 'data/territory_languages.min.json' }; diff --git a/modules/modes/save.js b/modules/modes/save.js index c59aee045..ac4076708 100644 --- a/modules/modes/save.js +++ b/modules/modes/save.js @@ -43,6 +43,11 @@ export function modeSave(context) { var _origChanges; var _location; + var _discardTags = {}; + context.data().get('discarded') + .then(function(d) { _discardTags = d; }) + .catch(function() { /* ignore */ }); + function cancel(selectedID) { if (selectedID) { @@ -92,7 +97,7 @@ export function modeSave(context) { _errors = []; // Store original changes, in case user wants to download them as an .osc file - _origChanges = history.changes(actionDiscardTags(history.difference())); + _origChanges = history.changes(actionDiscardTags(history.difference(), _discardTags)); // First time, `history.perform` a no-op action. // Any conflict resolutions will be done as `history.replace` @@ -241,15 +246,15 @@ export function modeSave(context) { if (sameVersions(local, remote)) return; var action = actionMergeRemoteChanges; - var merge = action(id, localGraph, remoteGraph, formatUser); + var merge = action(id, localGraph, remoteGraph, _discardTags, formatUser); history.replace(merge); var mergeConflicts = merge.conflicts(); if (!mergeConflicts.length) return; // merged safely - var forceLocal = action(id, localGraph, remoteGraph).withOption('force_local'); - var forceRemote = action(id, localGraph, remoteGraph).withOption('force_remote'); + var forceLocal = action(id, localGraph, remoteGraph, _discardTags).withOption('force_local'); + var forceRemote = action(id, localGraph, remoteGraph, _discardTags).withOption('force_remote'); var keepMine = t('save.conflict.' + (remote.visible ? 'keep_local' : 'restore')); var keepTheirs = t('save.conflict.' + (remote.visible ? 'keep_remote' : 'delete')); @@ -285,7 +290,7 @@ export function modeSave(context) { } else { var history = context.history(); - var changes = history.changes(actionDiscardTags(history.difference())); + var changes = history.changes(actionDiscardTags(history.difference(), _discardTags)); if (changes.modified.length || changes.created.length || changes.deleted.length) { loadLocation(); // so it is ready when we display the save screen osm.putChangeset(changeset, changes, uploadCallback); diff --git a/modules/osm/entity.js b/modules/osm/entity.js index a92680d6f..647fb5910 100644 --- a/modules/osm/entity.js +++ b/modules/osm/entity.js @@ -1,6 +1,5 @@ import { debug } from '../index'; import { osmIsInterestingTag } from './tags'; -import { dataDeprecated } from '../../data/index'; import { utilArrayUnion } from '../util'; @@ -52,7 +51,7 @@ osmEntity.key = function(entity) { var _deprecatedTagValuesByKey; -osmEntity.deprecatedTagValuesByKey = function() { +osmEntity.deprecatedTagValuesByKey = function(dataDeprecated) { if (!_deprecatedTagValuesByKey) { _deprecatedTagValuesByKey = {}; dataDeprecated.forEach(function(d) { @@ -187,7 +186,7 @@ osmEntity.prototype = { return true; }, - deprecatedTags: function() { + deprecatedTags: function(dataDeprecated) { var tags = this.tags; // if there are no tags, none can be deprecated diff --git a/modules/ui/commit_changes.js b/modules/ui/commit_changes.js index 407db9635..88a084066 100644 --- a/modules/ui/commit_changes.js +++ b/modules/ui/commit_changes.js @@ -18,6 +18,11 @@ export function uiCommitChanges(context) { var detected = utilDetect(); var _entityID; + var _discardTags = {}; + context.data().get('discarded') + .then(function(d) { _discardTags = d; }) + .catch(function() { /* ignore */ }); + function commitChanges(selection) { var history = context.history(); @@ -96,7 +101,7 @@ export function uiCommitChanges(context) { // Download changeset link var changeset = new osmChangeset().update({ id: undefined }); - var changes = history.changes(actionDiscardTags(history.difference())); + var changes = history.changes(actionDiscardTags(history.difference(), _discardTags)); delete changeset.id; // Export without chnageset_id @@ -158,9 +163,9 @@ export function uiCommitChanges(context) { } - commitChanges.entityID = function(_) { + commitChanges.entityID = function(val) { if (!arguments.length) return _entityID; - _entityID = _; + _entityID = val; return commitChanges; }; diff --git a/modules/ui/fields/address.js b/modules/ui/fields/address.js index 6783a4611..d1eaeb24f 100644 --- a/modules/ui/fields/address.js +++ b/modules/ui/fields/address.js @@ -2,7 +2,6 @@ import { dispatch as d3_dispatch } from 'd3-dispatch'; import { select as d3_select } from 'd3-selection'; import * as countryCoder from '@ideditor/country-coder'; -import { dataAddressFormats } from '../../../data'; import { geoExtent, geoChooseEdge, geoSphericalDistance } from '../../geo'; import { uiCombobox } from '../combobox'; import { utilArrayUniqBy, utilGetSetValue, utilNoAuto, utilRebind } from '../../util'; @@ -12,10 +11,21 @@ import { t } from '../../util/locale'; export function uiFieldAddress(field, context) { var dispatch = d3_dispatch('init', 'change'); var wrap = d3_select(null); + var addrField = context.presets().field('address'); // needed for placeholder strings + var _isInitialized = false; var _entity; - // needed for placeholder strings - var addrField = context.presets().field('address'); + var _addressFormats = [{ + format: [ + ['housenumber', 'street'], + ['city', 'postcode'] + ] + }]; + + context.data().get('address_formats') + .then(function(d) { _addressFormats = d; }) + .catch(function() { /* ignore */ }); + function getNearStreets() { var extent = _entity.extent(context.graph()); @@ -113,8 +123,8 @@ export function uiFieldAddress(field, context) { countryCode = countryCode.toLowerCase(); var addressFormat; - for (var i = 0; i < dataAddressFormats.length; i++) { - var format = dataAddressFormats[i]; + for (var i = 0; i < _addressFormats.length; i++) { + var format = _addressFormats[i]; if (!format.countryCodes) { addressFormat = format; // choose the default format, keep going } else if (format.countryCodes.indexOf(countryCode) !== -1) { diff --git a/modules/ui/fields/combo.js b/modules/ui/fields/combo.js index aeec7a2d4..cc03fd19e 100644 --- a/modules/ui/fields/combo.js +++ b/modules/ui/fields/combo.js @@ -38,6 +38,13 @@ export function uiFieldCombo(field, context) { var _entity; var _countryCode; + // initialize deprecated tags array + var _dataDeprecated = []; + context.data().get('deprecated') + .then(function(d) { _dataDeprecated = d; }) + .catch(function() { /* ignore */ }); + + // ensure multiCombo field.key ends with a ':' if (isMulti && /[^:]$/.test(field.key)) { field.key += ':'; @@ -193,7 +200,7 @@ export function uiFieldCombo(field, context) { return !d.count || d.count > 10; }); - var deprecatedValues = osmEntity.deprecatedTagValuesByKey()[field.key]; + var deprecatedValues = osmEntity.deprecatedTagValuesByKey(_dataDeprecated)[field.key]; if (deprecatedValues) { // don't suggest deprecated tag values data = data.filter(function(d) { diff --git a/modules/ui/fields/input.js b/modules/ui/fields/input.js index 7335f9bae..8ecec585d 100644 --- a/modules/ui/fields/input.js +++ b/modules/ui/fields/input.js @@ -3,7 +3,6 @@ import { select as d3_select, event as d3_event } from 'd3-selection'; import * as countryCoder from '@ideditor/country-coder'; import { t, textDirection } from '../../util/locale'; -import { dataPhoneFormats } from '../../../data'; import { utilGetSetValue, utilNoAuto, utilRebind } from '../../util'; import { svgIcon } from '../../svg/icon'; @@ -21,6 +20,13 @@ export function uiFieldText(field, context) { var input = d3_select(null); var outlinkButton = d3_select(null); var _entity; + var _phoneFormats = {}; + + if (field.type === 'tel') { + context.data().get('phone_formats') + .then(function(d) { _phoneFormats = d; }) + .catch(function() { /* ignore */ }); + } function i(selection) { var preset = _entity && context.presets().match(_entity, context.graph()); @@ -61,7 +67,7 @@ export function uiFieldText(field, context) { if (field.type === 'tel' && _entity) { var center = _entity.extent(context.graph()).center(); var countryCode = countryCoder.iso1A2Code(center); - var format = countryCode && dataPhoneFormats[countryCode.toLowerCase()]; + var format = countryCode && _phoneFormats[countryCode.toLowerCase()]; if (format) { wrap.selectAll('#' + fieldID) .attr('placeholder', format); diff --git a/modules/ui/fields/localized.js b/modules/ui/fields/localized.js index 1f42e2036..750f59047 100644 --- a/modules/ui/fields/localized.js +++ b/modules/ui/fields/localized.js @@ -3,8 +3,6 @@ import { select as d3_select, event as d3_event } from 'd3-selection'; import * as countryCoder from '@ideditor/country-coder'; import { currentLocale, t, languageName } from '../../util/locale'; -import { dataLanguages } from '../../../data'; -import { dataTerritoryLanguages } from '../../../data'; import { services } from '../../services'; import { svgIcon } from '../../svg'; import { tooltip } from '../../util/tooltip'; @@ -12,29 +10,7 @@ import { uiCombobox } from '../combobox'; import { utilDetect } from '../../util/detect'; import { utilArrayUniq, utilEditDistance, utilGetSetValue, utilNoAuto, utilRebind } from '../../util'; -var languagesArray = []; -function loadLanguagesArray() { - if (languagesArray.length !== 0) return; - - // some conversion is needed to ensure correct OSM tags are used - var replacements = { - sr: 'sr-Cyrl', // in OSM, `sr` implies Cyrillic - 'sr-Cyrl': false // `sr-Cyrl` isn't used in OSM - }; - - for (var code in dataLanguages) { - if (replacements[code] === false) continue; - var metaCode = code; - if (replacements[code]) metaCode = replacements[code]; - - languagesArray.push({ - localName: languageName(metaCode, { localOnly: true }), - nativeName: dataLanguages[metaCode].nativeName, - code: code, - label: languageName(metaCode) - }); - } -} +var _languagesArray = []; export function uiFieldLocalized(field, context) { @@ -44,6 +20,16 @@ export function uiFieldLocalized(field, context) { var localizedInputs = d3_select(null); var _countryCode; + context.data().get('languages') + .then(loadLanguagesArray) + .catch(function() { /* ignore */ }); + + var _territoryLanguages = {}; + context.data().get('territory_languages') + .then(function(d) { _territoryLanguages = d; }) + .catch(function() { /* ignore */ }); + + var allSuggestions = context.presets().collection.filter(function(p) { return p.suggestion === true; }); @@ -66,6 +52,30 @@ export function uiFieldLocalized(field, context) { var _entity; + function loadLanguagesArray(dataLanguages) { + if (_languagesArray.length !== 0) return; + + // some conversion is needed to ensure correct OSM tags are used + var replacements = { + sr: 'sr-Cyrl', // in OSM, `sr` implies Cyrillic + 'sr-Cyrl': false // `sr-Cyrl` isn't used in OSM + }; + + for (var code in dataLanguages) { + if (replacements[code] === false) continue; + var metaCode = code; + if (replacements[code]) metaCode = replacements[code]; + + _languagesArray.push({ + localName: languageName(context, metaCode, { localOnly: true }), + nativeName: dataLanguages[metaCode].nativeName, + code: code, + label: languageName(context, metaCode) + }); + } + } + + function calcLocked() { if (!_entity) { // the original entity field.locked(false); @@ -91,6 +101,7 @@ export function uiFieldLocalized(field, context) { field.locked(isLocked); } + // update _multilingual, maintaining the existing order function calcMultilingual(tags) { var existingLangsOrdered = _multilingual.map(function(item) { @@ -119,9 +130,6 @@ export function uiFieldLocalized(field, context) { function localized(selection) { - // load if needed - loadLanguagesArray(); - _selection = selection; calcLocked(); var isLocked = field.locked(); @@ -376,7 +384,7 @@ export function uiFieldLocalized(field, context) { function changeLang(d) { var lang = utilGetSetValue(d3_select(this)); var t = {}; - var language = languagesArray.find(function(d) { + 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()); @@ -418,18 +426,18 @@ export function uiFieldLocalized(field, context) { // show the user's language first var langCodes = [currentLocale, currentLocale.split('-')[0]]; - if (_countryCode && dataTerritoryLanguages[_countryCode]) { - langCodes = langCodes.concat(dataTerritoryLanguages[_countryCode]); + if (_countryCode && _territoryLanguages[_countryCode]) { + langCodes = langCodes.concat(_territoryLanguages[_countryCode]); } var langItems = []; langCodes.forEach(function(code) { - var langItem = languagesArray.find(function(item) { + var langItem = _languagesArray.find(function(item) { return item.code === code; }); if (langItem) langItems.push(langItem); }); - langItems = utilArrayUniq(langItems.concat(languagesArray)); + langItems = utilArrayUniq(langItems.concat(_languagesArray)); cb(langItems.filter(function(d) { return d.label.toLowerCase().indexOf(v) >= 0 || @@ -537,7 +545,7 @@ export function uiFieldLocalized(field, context) { entries.order(); utilGetSetValue(entries.select('.localized-lang'), function(d) { - return languageName(d.lang); + return languageName(context, d.lang); }); utilGetSetValue(entries.select('.localized-value'), diff --git a/modules/ui/intro/intro.js b/modules/ui/intro/intro.js index 5278e904c..ec17e9dce 100644 --- a/modules/ui/intro/intro.js +++ b/modules/ui/intro/intro.js @@ -56,7 +56,8 @@ export function uiIntro(context) { } } selection.call(startIntro); - }); + }) + .catch(function() { /* ignore */ }); } diff --git a/modules/ui/shortcuts.js b/modules/ui/shortcuts.js index 3b7018be8..d0bfde270 100644 --- a/modules/ui/shortcuts.js +++ b/modules/ui/shortcuts.js @@ -1,10 +1,6 @@ -import { - select as d3_select, - selectAll as d3_selectAll -} from 'd3-selection'; +import { select as d3_select, selectAll as d3_selectAll } from 'd3-selection'; import { t } from '../util/locale'; -import { dataShortcuts } from '../../data'; import { svgIcon } from '../svg/icon'; import { uiCmd } from './cmd'; import { uiModal } from './modal'; @@ -28,7 +24,7 @@ export function uiShortcuts(context) { } } else { _modalSelection = uiModal(_selection); - shortcutsModal(_modalSelection); + _modalSelection.call(shortcutsModal); } }); @@ -37,20 +33,21 @@ export function uiShortcuts(context) { _modalSelection.select('.modal') .classed('modal-shortcuts', true); - var shortcutsModal = _modalSelection.select('.content'); + var content = _modalSelection.select('.content'); - shortcutsModal + content .append('div') .attr('class', 'modal-section') .append('h3') .text(t('shortcuts.title')); - shortcutsModal - .call(render); + context.data().get('shortcuts') + .then(function(data) { content.call(render, data); }) + .catch(function() { /* ignore */ }); } - function render(selection) { + function render(selection, dataShortcuts) { var wrapper = selection .selectAll('.wrapper') .data([0]); @@ -80,7 +77,7 @@ export function uiShortcuts(context) { .attr('class', 'tab') .on('click', function (d, i) { _activeTab = i; - render(selection); + render(selection, dataShortcuts); }); tabsEnter @@ -257,7 +254,7 @@ export function uiShortcuts(context) { _selection = selection; if (show) { _modalSelection = uiModal(selection); - shortcutsModal(_modalSelection); + _modalSelection.call(shortcutsModal); } }; } diff --git a/modules/ui/success.js b/modules/ui/success.js index 5d7e660d2..3ab20c4a5 100644 --- a/modules/ui/success.js +++ b/modules/ui/success.js @@ -279,7 +279,7 @@ export function uiSuccess(context) { if (d.languageCodes && d.languageCodes.length) { const languageList = d.languageCodes - .map(code => languageName(code)) + .map(code => languageName(context, code)) .join(', '); moreEnter diff --git a/modules/util/locale.js b/modules/util/locale.js index f764f0972..44710a546 100644 --- a/modules/util/locale.js +++ b/modules/util/locale.js @@ -1,6 +1,5 @@ -import { dataLanguages } from '../../../data'; - var translations = Object.create(null); +var _dataLanguages = {}; export var currentLocale = 'en'; export var textDirection = 'ltr'; @@ -73,7 +72,6 @@ export function t(s, o, loc) { * * @param {string} dir ltr or rtl */ - export function setTextDirection(dir) { textDirection = dir; } @@ -86,38 +84,42 @@ export function setScriptNames(obj) { scriptNames = obj; } -export function languageName(code, options) { - if (languageNames[code]) { // name in locale langauge +export function languageName(context, code, options) { + // Data access is async now, which makes this complicated. + // If _dataLanguages haven't been loaded yet, try to load them. + // Worst case, we fallback to the code until the file has been loaded. + if (!Object.keys(_dataLanguages).length) { + context.data().get('languages') + .then(function(d) { _dataLanguages = d; }) + .catch(function() { /* ignore */ }); + } + if (languageNames[code]) { // name in locale langauge // e.g. German return languageNames[code]; } + // sometimes we only want the local name if (options && options.localOnly) return null; - var langInfo = dataLanguages[code]; - + var langInfo = _dataLanguages[code]; if (langInfo) { if (langInfo.nativeName) { // name in native language - // e.g. Deutsch (de) return t('translate.language_and_code', { language: langInfo.nativeName, code: code }); } else if (langInfo.base && langInfo.script) { - var base = langInfo.base; // the code of the langauge this is based on if (languageNames[base]) { // base language name in locale langauge var scriptCode = langInfo.script; var script = scriptNames[scriptCode] || scriptCode; - // e.g. Serbian (Cyrillic) return t('translate.language_and_code', { language: languageNames[base], code: script }); - } else if (dataLanguages[base] && dataLanguages[base].nativeName) { - + } else if (_dataLanguages[base] && _dataLanguages[base].nativeName) { // e.g. српски (sr-Cyrl) - return t('translate.language_and_code', { language: dataLanguages[base].nativeName, code: code }); + return t('translate.language_and_code', { language: _dataLanguages[base].nativeName, code: code }); } } } diff --git a/modules/validations/outdated_tags.js b/modules/validations/outdated_tags.js index 679021c4b..0a82de591 100644 --- a/modules/validations/outdated_tags.js +++ b/modules/validations/outdated_tags.js @@ -13,6 +13,12 @@ import { validationIssue, validationIssueFix } from '../core/validation'; export function validationOutdatedTags(context) { var type = 'outdated_tags'; + // initialize deprecated tags array + var _dataDeprecated = []; + context.data().get('deprecated') + .then(function(d) { _dataDeprecated = d; }) + .catch(function() { /* ignore */ }); + // initialize name-suggestion-index matcher var nsiMatcher = matcher(); nsiMatcher.buildMatchIndex(brands.brands); @@ -43,7 +49,7 @@ export function validationOutdatedTags(context) { } // upgrade tags.. - var deprecatedTags = entity.deprecatedTags(); + var deprecatedTags = entity.deprecatedTags(_dataDeprecated); if (deprecatedTags.length) { deprecatedTags.forEach(function(tag) { graph = actionUpgradeTags(entity.id, tag.old, tag.replace)(graph); diff --git a/modules/validations/suspicious_name.js b/modules/validations/suspicious_name.js index 0a3dbefa7..89f1c9b12 100644 --- a/modules/validations/suspicious_name.js +++ b/modules/validations/suspicious_name.js @@ -58,7 +58,7 @@ export function validationSuspiciousName() { var entity = context.hasEntity(this.entityIds[0]); if (!entity) return ''; var preset = utilPreset(entity, context); - var langName = langCode && languageName(langCode); + var langName = langCode && languageName(context, langCode); return t('issues.generic_name.message' + (langName ? '_language' : ''), { feature: preset.name(), name: genericName, language: langName } ); @@ -105,7 +105,7 @@ export function validationSuspiciousName() { var entity = context.hasEntity(this.entityIds[0]); if (!entity) return ''; var preset = utilPreset(entity, context); - var langName = langCode && languageName(langCode); + var langName = langCode && languageName(context, langCode); return t('issues.incorrect_name.message' + (langName ? '_language' : ''), { feature: preset.name(), name: incorrectName, language: langName } ); diff --git a/scripts/build_data.js b/scripts/build_data.js index 5d00fe148..c32a3ffe9 100644 --- a/scripts/build_data.js +++ b/scripts/build_data.js @@ -11,7 +11,7 @@ const YAML = require('js-yaml'); const fieldSchema = require('../data/presets/schema/field.json'); const presetSchema = require('../data/presets/schema/preset.json'); -const deprecated = require('../data/deprecated.json').dataDeprecated; +const deprecated = require('../data/deprecated.json'); // fontawesome icons const fontawesome = require('@fortawesome/fontawesome-svg-core'); @@ -85,7 +85,7 @@ function buildData() { 'data/presets/presets.json', 'data/presets.yaml', 'data/taginfo.json', - 'data/territory-languages.json', + 'data/territory_languages.json', 'dist/locales/en.json', 'svg/fontawesome/*.svg', ]); @@ -110,10 +110,26 @@ function buildData() { writeFileProm('data/presets/presets.json', prettyStringify({ presets: presets }, { maxLength: 9999 }) ), writeFileProm('data/presets.yaml', translationsToYAML(translations) ), writeFileProm('data/taginfo.json', prettyStringify(taginfo, { maxLength: 9999 }) ), - writeFileProm('data/territory-languages.json', prettyStringify({ dataTerritoryLanguages: territoryLanguages }, { maxLength: 9999 }) ), + writeFileProm('data/territory_languages.json', prettyStringify(territoryLanguages, { maxLength: 9999 }) ), writeEnJson(tstrings), writeFaIcons(faIcons), - writeTnpIcons(tnpIcons) + writeTnpIcons(tnpIcons), + minifyJSON('data/presets/categories.json', 'dist/data/categories.min.json'), + minifyJSON('data/presets/fields.json', 'dist/data/fields.min.json'), + minifyJSON('data/presets/presets.json', 'dist/data/presets.min.json'), + minifyJSON('data/address_formats.json', 'dist/data/address_formats.min.json'), + minifyJSON('data/deprecated.json', 'dist/data/deprecated.min.json'), + minifyJSON('data/discarded.json', 'dist/data/discarded.min.json'), + minifyJSON('data/imagery.json', 'dist/data/imagery.min.json'), + minifyJSON('data/intro_graph.json', 'dist/data/intro_graph.min.json'), + minifyJSON('data/keepRight.json', 'dist/data/keepRight.min.json'), + minifyJSON('data/languages.json', 'dist/data/languages.min.json'), + minifyJSON('data/locales.json', 'dist/data/locales.min.json'), + minifyJSON('data/phone_formats.json', 'dist/data/phone_formats.min.json'), + minifyJSON('data/qa_errors.json', 'dist/data/qa_errors.min.json'), + minifyJSON('data/shortcuts.json', 'dist/data/shortcuts.min.json'), + minifyJSON('data/taginfo.json', 'dist/data/taginfo.min.json'), + minifyJSON('data/territory_languages.json', 'dist/data/territory_languages.min.json') ]; return _currBuild = @@ -873,4 +889,20 @@ function readFileProm(path, options) { } +function minifyJSON(inPath, outPath) { + return new Promise((resolve, reject) => { + fs.readFile(inPath, 'utf8', (err, data) => { + if (err) return reject(err); + + const minified = JSON.stringify(JSON.parse(data)); + fs.writeFile(outPath, minified, (err) => { + if (err) return reject(err); + resolve(); + }); + + }); + }); +} + + module.exports = buildData; diff --git a/scripts/update_locales.js b/scripts/update_locales.js index dc7712e74..c48f57635 100644 --- a/scripts/update_locales.js +++ b/scripts/update_locales.js @@ -9,7 +9,7 @@ const colors = require('colors/safe'); const resources = ['core', 'presets', 'imagery', 'community']; const outdir = 'dist/locales/'; const apiroot = 'https://www.transifex.com/api/2'; -const projectURL = `${apiroot}/project/id-editor/`; +const projectURL = `${apiroot}/project/id-editor`; /* @@ -22,21 +22,14 @@ const projectURL = `${apiroot}/project/id-editor/`; * } * */ -const auth = JSON.parse(fs.readFileSync('../transifex.auth', 'utf8')); - -// const sourceCore = YAML.load(fs.readFileSync('../data/core.yaml', 'utf8')); -// const sourcePresets = YAML.load(fs.readFileSync('../data/presets.yaml', 'utf8')); -// const sourceImagery = YAML.load(fs.readFileSync('../node_modules/editor-layer-index/i18n/en.yaml', 'utf8')); -// const sourceCommunity = YAML.load(fs.readFileSync('../node_modules/osm-community-index/i18n/en.yaml', 'utf8')); - -const dataShortcuts = JSON.parse(fs.readFileSync('../data/shortcuts.json', 'utf8')).dataShortcuts; - -const cldrMainDir = '../node_modules/cldr-localenames-full/main/'; +const auth = JSON.parse(fs.readFileSync('./transifex.auth', 'utf8')); +const dataShortcuts = JSON.parse(fs.readFileSync('data/shortcuts.json', 'utf8')); +const cldrMainDir = 'node_modules/cldr-localenames-full/main/'; let referencedScripts = []; -const languageInfo = { dataLanguages: getLangNamesInNativeLang() }; -fs.writeFileSync('data/languages.json', JSON.stringify(languageInfo, null, 4)); +const languageInfo = getLangNamesInNativeLang(); +fs.writeFileSync('data/languages.json', prettyStringify(languageInfo, { maxLength: 200 })); let shortcuts = []; dataShortcuts.forEach(tab => { @@ -103,9 +96,9 @@ asyncMap(resources, getResource, (err, results) => { (err) => { if (!err) { const keys = Object.keys(dataLocales).sort(); - let sorted = {}; - keys.forEach(k => sorted[k] = dataLocales[k]); - fs.writeFileSync('data/locales.json', prettyStringify({ dataLocales: sorted }, { maxLength: 99999 })); + let sortedLocales = {}; + keys.forEach(k => sortedLocales[k] = dataLocales[k]); + fs.writeFileSync('data/locales.json', prettyStringify({ dataLocales: sortedLocales }, { maxLength: 99999 })); } } ); @@ -113,7 +106,7 @@ asyncMap(resources, getResource, (err, results) => { function getResource(resource, callback) { - let resourceURL = `${projectURL}resource/${resource}/`; + let resourceURL = `${projectURL}/resource/${resource}`; getLanguages(resourceURL, (err, codes) => { if (err) return callback(err); @@ -195,8 +188,8 @@ function getLanguageInfo(code, callback) { } -function getLanguages(resource, callback) { - let url = `${resource}?details`; +function getLanguages(resourceURL, callback) { + let url = `${resourceURL}?details`; request.get(url, { auth: auth }, (err, resp, body) => { if (err) return callback(err); console.log(`${resp.statusCode}: ${url}`); diff --git a/test/data/intro_graph.json b/test/data/intro_graph.min.json similarity index 100% rename from test/data/intro_graph.json rename to test/data/intro_graph.min.json diff --git a/test/spec/actions/discard_tags.js b/test/spec/actions/discard_tags.js index 9ebd9ef1a..cd67bb9a7 100644 --- a/test/spec/actions/discard_tags.js +++ b/test/spec/actions/discard_tags.js @@ -1,9 +1,11 @@ describe('iD.actionDiscardTags', function() { + var discardTags = { created_by: true }; + it('discards obsolete tags from modified entities', function() { var way = iD.osmWay({ id: 'w1', tags: { created_by: 'Potlatch' } }); var base = iD.coreGraph([way]); var head = base.replace(way.update({ tags: { created_by: 'Potlatch', foo: 'bar' } })); - var action = iD.actionDiscardTags(iD.coreDifference(base, head)); + var action = iD.actionDiscardTags(iD.coreDifference(base, head), discardTags); expect(action(head).entity(way.id).tags).to.eql({foo: 'bar'}); }); @@ -11,7 +13,7 @@ describe('iD.actionDiscardTags', function() { var way = iD.osmWay({ tags: { created_by: 'Potlatch' } }); var base = iD.coreGraph(); var head = base.replace(way); - var action = iD.actionDiscardTags(iD.coreDifference(base, head)); + var action = iD.actionDiscardTags(iD.coreDifference(base, head), discardTags); expect(action(head).entity(way.id).tags).to.eql({}); }); @@ -19,7 +21,7 @@ describe('iD.actionDiscardTags', function() { var way = iD.osmWay(); var base = iD.coreGraph(); var head = base.replace(way); - var action = iD.actionDiscardTags(iD.coreDifference(base, head)); + var action = iD.actionDiscardTags(iD.coreDifference(base, head), discardTags); expect(action(head).entity(way.id)).to.equal(way); }); @@ -27,7 +29,7 @@ describe('iD.actionDiscardTags', function() { var way = iD.osmWay({ tags: { lmnop: '' } }); var base = iD.coreGraph(); var head = base.replace(way); - var action = iD.actionDiscardTags(iD.coreDifference(base, head)); + var action = iD.actionDiscardTags(iD.coreDifference(base, head), discardTags); expect(action(head).entity(way.id).tags).to.eql({}); }); }); diff --git a/test/spec/actions/merge_remote_changes.js b/test/spec/actions/merge_remote_changes.js index 33835d971..77dad0777 100644 --- a/test/spec/actions/merge_remote_changes.js +++ b/test/spec/actions/merge_remote_changes.js @@ -1,4 +1,6 @@ describe('iD.actionMergeRemoteChanges', function () { + var discardTags = { created_by: true }; + var base = iD.coreGraph([ iD.osmNode({id: 'a', loc: [1, 1], version: '1', tags: {foo: 'foo'}}), @@ -73,7 +75,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph); + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags); var result = action(localGraph); expect(result).to.eql(localGraph); @@ -86,7 +88,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result).to.eql(localGraph); @@ -99,7 +101,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result).to.eql(localGraph); @@ -112,7 +114,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result).to.eql(localGraph); @@ -126,7 +128,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result.entity('a').version).to.eql('2'); @@ -141,7 +143,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result.entity('a').version).to.eql('2'); @@ -160,7 +162,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, loc: remoteLoc, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result).to.eql(localGraph); @@ -176,7 +178,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, loc: remoteLoc, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result.entity('a').version).to.eql('2'); @@ -195,7 +197,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('w1').update({tags: remoteTags, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result.entity('w1').version).to.eql('2'); @@ -212,7 +214,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote, r2, r3]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result.entity('w1').version).to.eql('2'); @@ -232,7 +234,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}), localGraph = makeGraph([local, r2, r3]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result.entity('w1').version).to.eql('2'); @@ -251,7 +253,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}), localGraph = makeGraph([local, r1, r2]), remoteGraph = makeGraph([remote, r3, r4]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result.entity('w1').version).to.eql('2'); @@ -270,7 +272,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}), localGraph = makeGraph([local, r1, r2]), remoteGraph = makeGraph([remote, r3, r4]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result).to.eql(localGraph); @@ -283,7 +285,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('p1').update({loc: remoteLoc, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result.entity('p1').version).to.eql('2'); @@ -297,7 +299,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('p1').update({loc: remoteLoc, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result).to.eql(localGraph); @@ -315,7 +317,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('r').update({tags: remoteTags, members: remoteMembers, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote, s1, s2, s3, s4, w4]), - action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result).to.eql(localGraph); @@ -331,7 +333,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('r').update({tags: remoteTags, members: remoteMembers, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph), + action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph, discardTags), result = action(localGraph); expect(result.entity('r').version).to.eql('2'); @@ -349,7 +351,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, loc: remoteLoc, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph); + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags); action(localGraph); expect(action.conflicts()).not.to.be.empty; @@ -369,7 +371,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, loc: remoteLoc, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph).withOption('force_local'), + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags).withOption('force_local'), result = action(localGraph); expect(result.entity('a').version).to.eql('2'); @@ -386,7 +388,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('a').update({tags: remoteTags, loc: remoteLoc, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph).withOption('force_remote'), + action = iD.actionMergeRemoteChanges('a', localGraph, remoteGraph, discardTags).withOption('force_remote'), result = action(localGraph); expect(result.entity('a').version).to.eql('2'); @@ -406,7 +408,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}), localGraph = makeGraph([local, r1, r2]), remoteGraph = makeGraph([remote, r3, r4]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph).withOption('force_local'), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags).withOption('force_local'), result = action(localGraph); expect(result.entity('w1').version).to.eql('2'); @@ -423,7 +425,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('w1').update({tags: remoteTags, nodes: remoteNodes, version: '2'}), localGraph = makeGraph([local, r1, r2]), remoteGraph = makeGraph([remote, r3, r4]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph).withOption('force_remote'), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags).withOption('force_remote'), result = action(localGraph); expect(result.entity('w1').version).to.eql('2'); @@ -440,7 +442,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('p1').update({loc: remoteLoc, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph).withOption('force_local'), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags).withOption('force_local'), result = action(localGraph); expect(result.entity('p1').version).to.eql('2'); @@ -454,7 +456,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('p1').update({loc: remoteLoc, version: '2'}), localGraph = makeGraph([local]), remoteGraph = makeGraph([remote]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph).withOption('force_remote'), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags).withOption('force_remote'), result = action(localGraph); expect(result.entity('p1').version).to.eql('2'); @@ -469,7 +471,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('w1').update({nodes: remoteNodes, version: '2'}), localGraph = makeGraph([local, localr1, r2]), remoteGraph = makeGraph([remote, r3, r4]), - action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph).withOption('force_remote'), + action = iD.actionMergeRemoteChanges('w1', localGraph, remoteGraph, discardTags).withOption('force_remote'), result = action(localGraph); expect(result.entity('w1').nodes).to.eql(remoteNodes); @@ -489,7 +491,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('r').update({tags: remoteTags, members: remoteMembers, version: '2'}), localGraph = makeGraph([local, r1, r2, r3, r4, w3]), remoteGraph = makeGraph([remote, s1, s2, s3, s4, w4]), - action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph).withOption('force_local'), + action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph, discardTags).withOption('force_local'), result = action(localGraph); expect(result.entity('r').version).to.eql('2'); @@ -506,7 +508,7 @@ describe('iD.actionMergeRemoteChanges', function () { remote = base.entity('r').update({tags: remoteTags, members: remoteMembers, version: '2'}), localGraph = makeGraph([local, r1, r2, r3, r4, w3]), remoteGraph = makeGraph([remote, s1, s2, s3, s4, w4]), - action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph).withOption('force_remote'), + action = iD.actionMergeRemoteChanges('r', localGraph, remoteGraph, discardTags).withOption('force_remote'), result = action(localGraph); expect(result.entity('r').version).to.eql('2'); diff --git a/test/spec/core/data.js b/test/spec/core/data.js index c727b2a64..da2ed8fd5 100644 --- a/test/spec/core/data.js +++ b/test/spec/core/data.js @@ -22,7 +22,7 @@ describe('iD.coreData', function() { }); it('sets the fileMap', function() { var data = iD.coreData(_context); - var files = { 'intro_graph': 'data/intro_graph.json' }; + var files = { 'intro_graph': 'data/intro_graph.min.json' }; expect(data.fileMap(files)).to.be.ok; }); }); @@ -31,31 +31,46 @@ describe('iD.coreData', function() { it('returns a promise resolved if we already have the data', function(done) { var data = iD.coreData(_context); var prom = data.get('test'); - expect(prom).to.be.a('promise'); - prom.then(function (data) { - expect(data).to.be.a('object'); - expect(data.hello).to.eql('world'); - done(); - }); + // expect(prom).to.be.a('promise'); // these are polyfilled in phantomjs + prom + .then(function(data) { + expect(data).to.be.a('object'); + expect(data.hello).to.eql('world'); + done(); + }) + .catch(function(err) { + throw err; + done(); + }); }); it('returns a promise rejected if we can not get the data', function(done) { var data = iD.coreData(_context); var prom = data.get('wat'); - prom.catch(function (err) { - expect(/^Unknown data file/.test(err)).to.be.true; - done(); - }); + prom + .then(function(data) { + throw new Error('got data ' + data); + done(); + }) + .catch(function(err) { + expect(/^Unknown data file/.test(err)).to.be.true; + done(); + }); }); it('returns a promise to fetch data if we do not already have the data', function(done) { - var files = { 'intro_graph': 'data/intro_graph.json' }; + var files = { 'intro_graph': 'data/intro_graph.min.json' }; var data = iD.coreData(_context).fileMap(files); var prom = data.get('intro_graph'); - expect(prom).to.be.a('promise'); - prom.then(function (data) { - expect(data).to.be.a('object'); - expect(data.n1.tags.name).to.eql('Three Rivers City Hall'); - done(); - }); + // expect(prom).to.be.a('promise'); // these are polyfilled in phantomjs + prom + .then(function(data) { + expect(data).to.be.a('object'); + expect(data.n1.tags.name).to.eql('Three Rivers City Hall'); + done(); + }) + .catch(function(err) { + throw err; + done(); + }); }); }); diff --git a/test/spec/osm/entity.js b/test/spec/osm/entity.js index 5a74916df..9fff8c076 100644 --- a/test/spec/osm/entity.js +++ b/test/spec/osm/entity.js @@ -222,46 +222,54 @@ describe('iD.osmEntity', function () { }); describe('#deprecatedTags', function () { + var deprecated = [ + { old: { highway: 'no' } }, + { old: { amenity: 'toilet' }, replace: { amenity: 'toilets' } }, + { old: { speedlimit: '*' }, replace: { maxspeed: '$1' } }, + { old: { man_made: 'water_tank' }, replace: { man_made: 'storage_tank', content: 'water' } }, + { old: { amenity: 'gambling', gambling: 'casino' }, replace: { amenity: 'casino' } } + ]; + it('returns none if entity has no tags', function () { - expect(iD.osmEntity().deprecatedTags()).to.eql([]); + expect(iD.osmEntity().deprecatedTags(deprecated)).to.eql([]); }); it('returns none when no tags are deprecated', function () { - expect(iD.osmEntity({ tags: { amenity: 'toilets' } }).deprecatedTags()).to.eql([]); + expect(iD.osmEntity({ tags: { amenity: 'toilets' } }).deprecatedTags(deprecated)).to.eql([]); }); it('returns 1:0 replacement', function () { - expect(iD.osmEntity({ tags: { highway: 'no' } }).deprecatedTags()).to.eql( + expect(iD.osmEntity({ tags: { highway: 'no' } }).deprecatedTags(deprecated)).to.eql( [{ old: { highway: 'no' } }] ); }); it('returns 1:1 replacement', function () { - expect(iD.osmEntity({ tags: { amenity: 'toilet' } }).deprecatedTags()).to.eql( + expect(iD.osmEntity({ tags: { amenity: 'toilet' } }).deprecatedTags(deprecated)).to.eql( [{ old: { amenity: 'toilet' }, replace: { amenity: 'toilets' } }] ); }); it('returns 1:1 wildcard', function () { - expect(iD.osmEntity({ tags: { speedlimit: '50' } }).deprecatedTags()).to.eql( + expect(iD.osmEntity({ tags: { speedlimit: '50' } }).deprecatedTags(deprecated)).to.eql( [{ old: { speedlimit: '*' }, replace: { maxspeed: '$1' } }] ); }); it('returns 1:2 total replacement', function () { - expect(iD.osmEntity({ tags: { man_made: 'water_tank' } }).deprecatedTags()).to.eql( + expect(iD.osmEntity({ tags: { man_made: 'water_tank' } }).deprecatedTags(deprecated)).to.eql( [{ old: { man_made: 'water_tank' }, replace: { man_made: 'storage_tank', content: 'water' } }] ); }); it('returns 1:2 partial replacement', function () { - expect(iD.osmEntity({ tags: { man_made: 'water_tank', content: 'water' } }).deprecatedTags()).to.eql( + expect(iD.osmEntity({ tags: { man_made: 'water_tank', content: 'water' } }).deprecatedTags(deprecated)).to.eql( [{ old: { man_made: 'water_tank' }, replace: { man_made: 'storage_tank', content: 'water' } }] ); }); it('returns 2:1 replacement', function () { - expect(iD.osmEntity({ tags: { amenity: 'gambling', gambling: 'casino' } }).deprecatedTags()).to.eql( + expect(iD.osmEntity({ tags: { amenity: 'gambling', gambling: 'casino' } }).deprecatedTags(deprecated)).to.eql( [{ old: { amenity: 'gambling', gambling: 'casino' }, replace: { amenity: 'casino' } }] ); }); diff --git a/test/spec/spec_helpers.js b/test/spec/spec_helpers.js index b5beec3c5..23241667f 100644 --- a/test/spec/spec_helpers.js +++ b/test/spec/spec_helpers.js @@ -19,6 +19,8 @@ iD.data.presets = { man_made: { name: 'Man Made', tags: { man_made: '*' }, geometry: ['vertex', 'point', 'line', 'area'] } } }; +// creating `coreContext` creates validators, and `validatonOutdatedTags` will try to load this +iD.data.deprecated = []; mocha.setup({ diff --git a/test/spec/ui/fields/localized.js b/test/spec/ui/fields/localized.js index e4bd9316c..fbc815ac9 100644 --- a/test/spec/ui/fields/localized.js +++ b/test/spec/ui/fields/localized.js @@ -1,6 +1,19 @@ describe('iD.uiFieldLocalized', function() { var context, selection, field; + before(function() { + iD.data.languages = { + de: { nativeName: 'Deutsch' }, + en: { nativeName: 'English' } + }; + iD.data.territory_languages = {}; + }); + + after(function() { + delete iD.data.languages; + delete iD.data.territory_languages; + }); + beforeEach(function() { context = iD.coreContext(); selection = d3.select(document.createElement('div')); @@ -8,6 +21,7 @@ describe('iD.uiFieldLocalized', function() { field.locked = function() { return false; }; }); + it('adds a blank set of fields when the + button is clicked', function() { var localized = iD.uiFieldLocalized(field, context); selection.call(localized); diff --git a/test/spec/validations/outdated_tags.js b/test/spec/validations/outdated_tags.js index 2c3abb487..433790d57 100644 --- a/test/spec/validations/outdated_tags.js +++ b/test/spec/validations/outdated_tags.js @@ -1,10 +1,22 @@ describe('iD.validations.outdated_tags', function () { var context; + before(function() { + iD.data.deprecated = [ + { old: { highway: 'no' } }, + { old: { highway: 'ford' }, replace: { ford: '*' } } + ]; + }); + + after(function() { + delete iD.data.deprecated; + }); + beforeEach(function() { context = iD.coreContext(); }); + function createWay(tags) { var n1 = iD.osmNode({id: 'n-1', loc: [4,4]}); var n2 = iD.osmNode({id: 'n-2', loc: [4,5]});