From 878bdabee8b44930cca1bc8354ad249d70d8c893 Mon Sep 17 00:00:00 2001
From: Siebrand Mazeland
Date: Mon, 31 Mar 2014 21:44:36 +0000
Subject: [PATCH 01/39] Localisation updates from https://translatewiki.net.
---
config/locales/ar.yml | 40 +-
config/locales/br.yml | 12 +-
config/locales/da.yml | 2 +-
config/locales/diq.yml | 16 +-
config/locales/el.yml | 15 +-
config/locales/et.yml | 2 +-
config/locales/fa.yml | 68 +--
config/locales/gl.yml | 2 +-
config/locales/he.yml | 1 +
config/locales/ja.yml | 2 +-
config/locales/ko.yml | 20 +-
config/locales/lv.yml | 10 +-
config/locales/nb.yml | 3 +-
config/locales/oc.yml | 69 ++-
config/locales/pt-BR.yml | 39 +-
config/locales/ro.yml | 66 ++-
config/locales/sk.yml | 2 +-
config/locales/sv.yml | 6 +-
config/locales/tl.yml | 13 +-
config/locales/tr.yml | 3 +
config/locales/uk.yml | 2 +-
config/locales/zh-CN.yml | 22 +-
config/locales/zh-TW.yml | 880 ++++++++++++++++++++++++---------------
23 files changed, 833 insertions(+), 462 deletions(-)
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 8cb03ae17..d4164814b 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -15,6 +15,7 @@
# Author: TTMTT
# Author: Zaher kadour
# Author: ترجمان05
+# Author: عبد الرحمان أيمن
ar:
activerecord:
attributes:
@@ -51,7 +52,7 @@ ar:
languages: اللغات
pass_crypt: كلمة السر
models:
- acl: قائمة تحكم الوصول
+ acl: لائحة التحكم بالوصول
changeset: حزمة التغييرات
changeset_tag: سمة حزمة التغييرات
country: البلد/الدولة
@@ -105,7 +106,7 @@ ar:
location: "الموقع:"
no_comment: (لا تعليق)
not_found:
- sorry: عفوًا، لم يتم العثور على %{type} بالمعرّف %{id}.
+ sorry: "عفوًا، تعذر العثور على %{type} #%{id}."
type:
changeset: حزمة التغييرات
node: عقدة
@@ -113,9 +114,9 @@ ar:
way: طريق
note:
closed_title: "ملاحظات محلولة: %{note_name}"
- description: "الوصف:"
+ description: الوصف
open_title: "ملاحظة لم يتم حلها: %{note_name}"
- title: ملاحظة
+ title: "ملاحظة: %{id}"
redacted:
redaction: التنقيح %{id}
type:
@@ -132,7 +133,7 @@ ar:
load_data: تحميل البيانات
loading: جاري التحميل...
tag_details:
- tags: "الوسوم:"
+ tags: الوسوم
wikipedia_link: الـ%{page} مقالة على ويكيبيديا
timeout:
sorry: عذرًا، بيانات %{type} بالمعرّف %{id} استغرقت وقتًا طويلا للاسترداد.
@@ -817,7 +818,7 @@ ar:
layouts:
community_blogs: مدونات المجتمع
community_blogs_title: مدونات لأعضاء من مجتمع خريطة الشارع المفتوحة
- copyright: حقوق النشر والترخيص
+ copyright: حقوق النسخ
data: البيانات
donate: ادعم خريطة الشارع المفتوحة ب%{link} لتمويل ترقية العتاد.
edit: تعديل
@@ -832,11 +833,11 @@ ar:
history: تاريخ
home: اذهب إلى الصفحة الرئيسية
intro_2_create_account: أنشئ حساب مستخدم
- log_in: تسجيل الدخول
+ log_in: لِج
log_in_tooltip: سجّل الدخول مع حساب موجود
logo:
alt_text: شعار خريطة الشارع المفتوحة
- logout: اخرج
+ logout: سجل خروج
make_a_donation:
text: تبرع
title: ادعم خريطة الشارع المفتوحة بهبة نقدية
@@ -845,7 +846,7 @@ ar:
partners_html: الضيافة مدعومة من %{ucl}, %{ic} و %{bytemark}, و %{partners} آخرون.
partners_ic: كلية امبراطورية لندن
partners_partners: الشركاء
- sign_up: أنشئ حسابًا
+ sign_up: إنشئ حساباً
sign_up_tooltip: أنشئ حسابًا كي تستطيع المساهمة
tag_line: ويكي خريطة العالم الحرة
user_diaries: يوميات المستخدمين
@@ -964,7 +965,7 @@ ar:
header: "%{from_user} قام بإرسال رسالة لك عبر خريطة الشارع المفتوحة بالعنوان %{subject}:"
hi: مرحبًا %{to_user}،
signup_confirm:
- subject: "[خريطة الشارع المفتوحة] أكّد عنوان بريدك الإلكتروني"
+ subject: "[خرائط اوبن ستريت] مرحباً بك في خرائط اوبن ستريت"
oauth:
oauthorize:
allow_read_gpx: قراءة آثار جي بي أس الخاصة بك.
@@ -1218,7 +1219,7 @@ ar:
trace_paging_nav:
newer: الآثار الحديثة
older: الآثار القديمة
- showing_page: إظهار الصفحة %{page}
+ showing_page: الصفحة %{page}
view:
delete_track: احذف هذا الأثر
description: "الوصف:"
@@ -1309,6 +1310,7 @@ ar:
hide: إخفاء المستخدمين المحددين
title: المستخدمون
login:
+ account not active: عذراً، حسابك غير نشط حتى الآن.
يُرجى إستخدام الرابط الذي اُرسِلَ إليك فى رسالة تأكيد البريد الإلكتروني، كما يُمكنك طلب رسالة تأكيد جديدة فى حالة عدم إستلام الاولى.
auth failure: آسف، لا يمكن الدخول بتلك التفاصيل.
create account minute: أنشئ حساباّ. تحتاج فقط إلى دقيقة.
email or username: "عنوان البريد الإلكتروني أو اسم المستخدم:"
@@ -1342,7 +1344,7 @@ ar:
confirm email address: "تأكيد عنوان البريد الإلكتروني:"
confirm password: "تأكيد كلمة المرور:"
contact_webmaster: يرجى الاتصال بمسؤول الموقع لترتيب الحساب المراد إنشاؤه - وسنحاول التعامل مع هذا الطلب بأسرع وقت ممكن.
- continue: استمرار
+ continue: إنشئ حساباً
display name: "اسم المستخدم:"
display name description: اسم المستخدم الخاص بك الظاهر علنًا. يمكنك تغيير هذه التفضيلات في وقت لاحق.
email address: "عنوان البريد الإلكتروني:"
@@ -1351,7 +1353,7 @@ ar:
not displayed publicly: لا يعرض علنًا (انظر سياسة الخصوصية)
password: "كلمة السر:"
terms accepted: نشكرك على قبول شروط المساهم الجديدة!
- title: أنشئ حسابا
+ title: إنشئ حساباً
no_such_user:
body: عذرًا، لا يوجد مستخدم بالاسم %{user}. يرجى تدقيق الاسم، أو ربما يكون الرابط الذي تم النقر عليه خاطئ.
heading: المستخدم %{user} غير موجود
@@ -1422,10 +1424,10 @@ ar:
m away: على بعد %{count}متر
mapper since: "مُخطط منذ:"
moderator_history: اعرض العرقلات المعطاة
- my comments: تعليقاتي
- my diary: يوميتي
- my edits: مساهماتي
- my settings: إعداداتي
+ my comments: التعليقات
+ my diary: اليوميات
+ my edits: المُساهمات
+ my settings: الإعدادات
my traces: آثاري
nearby users: "مستخدمين أيضًا بالجوار:"
nearby_changesets: تصفح كل حزم التغييرات من قبل المستخدمين في المقربة
@@ -1444,7 +1446,7 @@ ar:
revoke:
administrator: ابطل وصول إداري
moderator: ابطل وصول وسيط
- send message: أرسل رسالة
+ send message: إرسل رسالة
settings_link_text: إعدادات
status: "الحالة:"
traces: آثار
@@ -1512,7 +1514,7 @@ ar:
revoke: ابطل!
revoker_name: مُبطل بواسطة
show: اعرض
- showing_page: جاري عرض الصفحة %{page}
+ showing_page: الصفحة %{page}
status: الحالة
period:
few: "%{count} ساعات"
diff --git a/config/locales/br.yml b/config/locales/br.yml
index 332514dd2..d73fcc96e 100644
--- a/config/locales/br.yml
+++ b/config/locales/br.yml
@@ -9,12 +9,14 @@
# Author: Y-M D
br:
about_page:
+ community_driven_html: "Liesseurt hag entanet eo kumuniezh OpenStreetMap. O kreskiñ emañ bemdez. E-mesk hor c'henlabourerien ez eus kartennourien entanet, tud a-vicher eus ar GIS, ijinourien hag a laka servijerien OSM da vont en-dro, denegourien hag a sav kartennoù eus an takadoù gwastet gant gwallreuzioù ha kalz re all.\nEvit gouzout hiroc'h diwar-benn ar gumuniezh, sellit ouzh deizlevrioù an implijerien, blogoù ar gumuniezh, hag lec'hienn web Diazezadur OSM."
community_driven_title: Renet gant ar gumuniezh
copyright_html: ©OpenStreetMap
kenlabourerien
lede_text: Savet eo OpenStreetMap gant ur gumuniezh gartennerien a-youl vat a genlabour hag a gempenn roadennoù diwar-benn hentoù, gwenodennoù, kafedioù, tiez-gar, ha muioc'h c'hoazh, er bed a-bezh.
local_knowledge_html: OpenStreetMap a laka ar pouez war an anaoudegezh eus an dachenn. Implijout a ra ar genlabourerien skeudennoù tapet diwar nij, mekanikoù GPS ha kartennoù klasel abalamour da wiriañ ez eo reizh ha hizivaet OSM.
local_knowledge_title: Gouiziegezh lec'hel
next: War-lerc'h
+ open_data_html: "OpenStreetMap zo open data: gallout a rit implijout anezhañ evit forzh pseeurt pal keit ha ma roit kred da OpenStreetMap ha d'ar re a labour warnañ. Ma cheñchit ar roadennoù pe ma harpit warno e doareoù zo, e c'hallit skignañ an disoc'h dindan ar memes aotre-implij hepken. Sellit ouzh Aotre-eilañ ha pajenn an aotre-implij evit gouzout hiroc'h."
open_data_title: Roadennoù digor
partners_title: Kevelerien
used_by: "%{name} a bourchas kartennoù da gantadoù a lec'hiennoù web, da arloadoù hezoug ha da vekanikoù"
@@ -141,7 +143,7 @@ br:
closed_title: "Notenn diskoulmet : %{note_name}"
commented_by: Addispleg gant %{user} %{when} zo
commented_by_anonymous: Addispleg gant un den dianv %{when} zo
- description: "Deskrivadur :"
+ description: Deskrivadur
hidden_by: Kuzhet gant %{user} %{when} zo
hidden_title: "Notenn kuzhet #%{note_name}"
new_note: Notenn nevez
@@ -347,6 +349,7 @@ br:
description: Mamennoù all a gaver o roll er wiki OpenStreetMap
title: Tarzhioù all
overpass:
+ description: Pellgargañ ar voest engronnus-mañ diwar ur melezour eus diaz roadennoù OpenStreetMap
title: API Treuzell
planet:
description: Eilennoù hizivaet ingal eus diaz roadennoù klok OpenStreetMap
@@ -355,11 +358,14 @@ br:
title: Ezporzhiañ
fixthemap:
how_to_help:
+ add_a_note:
+ instructions_html: "Klikit war pe war ar memes arlun war ar gartenn.\nEvel-se e vo ouzhpennet ur merker d'ar gartenn, ha gallout a reoc'h riklañ anezhañ. Ouzhpennit ho kemennadenn, neuze klikit war enrollañ, ha studiet e vo gant ar gartennaouerien all."
join_the_community:
explanation_html: M'ho peus merzet ez eus ur gudenn gant roadennoù hor c'hartennoù, da skouer un hent diank pe ho chomlec'h, an doare d'ober gwellañ eo mont d'ar gumuniezh OpenStreetMap hag ouzhpennañ pe dresañ ar roadennoù hoc'h-unan.
title: Mont er gumuniezh-mañ
title: Penaos sikour
other_concerns:
+ explanation_html: Ma'z oc'h chalet gant an doare ma vez implijet hor roadennoù pe gant an endalc'hadoù, sellit ouzh hor pajenn gwir-eilañ evit muioc'h a ditouroù lezennel, pe kit e darempred gant ar strollad-labour OSMF a zere.
title: Prederioù all
title: " Diskouez ez eus ur gudenn / Reizhañ ar gartenn"
geocoder:
@@ -896,6 +902,7 @@ br:
description: Ober ur goulenn pe klask respontoù e lec'hienn goulennoù-respontoù OSM
title: help.openstreetmap.org
url: https://help.openstreetmap.org/
+ introduction: OpenStreetMap zo gantañ meur a zoare da c'houzout hiroc'h diwar-benn ar raktres, d'ober goulennoù ha da respont da c'houlennoù, ha da gendivizout ha da deuliaduriñ sujedoù ar c'hartennoù.
title: Tapout sikour
welcome:
description: Krogit gant ar sturlevr-mañ evit deskiñ diazezoù OpenStreetMap
@@ -936,7 +943,7 @@ br:
notes:
new:
add: Ouzhpennañ un notenn
- intro: Evit gwellaat ar gartenn e tiskouezer ar roadennoù a ebarzhit d'ar gartennaouerien all, setu displegit fraezh an traoù ha bezit resis kement ha ma c'hallit, mar plij, pa zilec'hiit ar merker d'ul lec'h mat ha pa ebarzhit ho notenn amañ dindan.
+ intro: Gwelet ho peus ur fazi pe un dra a vank ? Roit an dra-se da c'houzout d'ar gartennaouerien all evit ma vo renket. Lakait ar merker el lec'h mat ha skrivet un notenn da zisplegañ ar gudenn. (Arabat skrivañ titouroù personel amañ, mar plij.)
show:
anonymous_warning: En notenn-mañ ez eus evezhiadennoù gant implijerien dianav hag a zlefe bezañ gwiriekaet unan-ha-unan.
comment: Evezhiadenn
@@ -1025,6 +1032,7 @@ br:
title: Skouer deverkadur
contributors_at_html: "Aostria : Ennañ roadennoù eus\nStadt Wien (dindan\nCC BY. \t\nCC BY), \nLand Vorarlberg ha\nLand Tirol (dindan CC-BY AT gant enkemmadoù)."
contributors_ca_html: "Kanada : Ennañ roadennoù eus\n GeoBase®, GeoGratis (© Department of Natural\n Resources Canada), CanVec (© Department of Natural\n Resources Canada), ha StatCan (Geography Division,\n Statistics Canada)."
+ contributors_fi_html: "Finland: Ennañ ez eus roadennoù eus diaz roadennoù Ensellerezh Broadel Tiriad hag holladoù roadennoù all, dindan an\naotre-implij NLSFI."
contributors_footer_1_html: "↓Evit muioc'h a vunudoù diwar-benn ar re-se, hag ar mammennoù all a zo bet implijet da sikour da wellaat OpenStreetMap, sellit ouzh ar Bajenn Skoazellerien e Wiki OpenStreetMap."
contributors_footer_2_html: Enlakaat roadennoù e OpenStreetMap ne empleg ket ez aprou ar bourchaserien orin a endalc'had OpenStreetMap, na ne bourchasont, na ne waratomp pe na ne zegemeront ne vern pe atebegezh e vefe.
contributors_fr_html: "Frañs : Ennañ roadennoù eus Renerezh Hollek an Tailhoù."
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 83cbe22b1..9793b984d 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -153,7 +153,7 @@ da:
closed_title: "Løst bemærkning #%{note_name}"
commented_by: Kommentar fra %{user} for %{when} siden
commented_by_anonymous: Kommentar fra en anonym for %{when} siden
- description: "Beskrivelse:"
+ description: Beskrivelse
hidden_by: Skjult af %{user} for %{when} siden
hidden_title: "Skjult bemærkning #%{note_name}"
new_note: Ny bemærkning
diff --git a/config/locales/diq.yml b/config/locales/diq.yml
index 74e388e14..ce91bf6b3 100644
--- a/config/locales/diq.yml
+++ b/config/locales/diq.yml
@@ -14,7 +14,7 @@ diq:
language: Zıwan
latitude: Heralem
longitude: Lemen
- title: Sername
+ title: Mewzu
user: Karber
friend:
friend: Embaz
@@ -23,7 +23,7 @@ diq:
body: Mesac
recipient: Grotker
sender: Rıster
- title: Sername
+ title: Mewzu
trace:
description: Şınasnayış
latitude: Heralem
@@ -76,7 +76,8 @@ diq:
way_tag: Etikete ray
browse:
changeset:
- title: Seta vurnayışan
+ belongs_to: Nuştekar
+ title: "Koma vurnayışi: %{id}"
containing_relation:
entry: Eleqe %{relation_name}
entry_role: Eleqe %{relation_name} (%{relation_role} deye)
@@ -86,12 +87,16 @@ diq:
node: qedyin
relation: eleqe
way: ray
+ note:
+ description: Şınasnayış
redacted:
redaction: Temamey %{id}
type:
node: qedyin
relation: eleqe
way: ray
+ relation:
+ members: Ezay
relation_member:
type:
node: Qedyin
@@ -108,6 +113,7 @@ diq:
node: qedyin
relation: eleqe
way: ray
+ version: Versiyon
changeset:
changeset:
no_edits: (vurnayış çıniyo)
@@ -458,7 +464,7 @@ diq:
edit: Timar ke
export: Tebergroten
help: Peşti
- history: Ravêrden
+ history: Tarix
log_in: cı kewe
logout: veciyayış
sign_up: qeyd be
@@ -524,7 +530,7 @@ diq:
edit:
description: Şınasnayış
new:
- description: Sılasnayış
+ description: Şınasnayış
show:
confirm: Vac welay?
description: "Şınasiyen:"
diff --git a/config/locales/el.yml b/config/locales/el.yml
index c8fad57b0..a8b4bc27a 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -148,7 +148,7 @@ el:
closed_title: "Επιλυμένη σημείωση: #%{note_name}"
commented_by: Σχόλιο από τον %{user} πριν από %{when}
commented_by_anonymous: Σχόλιο από ανώνυμο χρήστη πριν από %{when}
- description: "Περιγραφή:"
+ description: Περιγραφή
hidden_by: Έγινε κρυφή από τον %{user} πριν από %{when}
hidden_title: "Κρυφή σημείωση #%{note_name}"
new_note: Νέα Σημείωση
@@ -251,12 +251,12 @@ el:
one: "%{count} σχόλιο"
other: "%{count} σχόλια"
zero: Κανένα σχόλιο
- comment_link: Σχόλιο για τη καταχώρηση
+ comment_link: Σχολιάστε την καταχώρηση
confirm: Επιβεβαίωση
edit_link: Επεξεργασία καταχώρησης
hide_link: Απόκρυψη αυτής της καταχώρησης
posted_by: Γράφτηκε από το χρήστη %{link_user} στις %{created} στα %{language_link}
- reply_link: Απάντηση στη καταχώρηση
+ reply_link: Απαντήστε στην καταχώρηση
edit:
body: "Κείμενο:"
language: "Γλώσσα:"
@@ -892,6 +892,7 @@ el:
description: Κάνετε ένα ερώτημα ή αναζητήσετε απαντήσεις στην ιστοσελίδα ερωτήσεων και απαντήσεων του OSM.
title: help.openstreetmap.org
url: https://help.openstreetmap.org/
+ introduction: "OpenStreetMap έχει πολλαπλούς πόρους για να μάθετε σχετικά με το έργο, να κάνετε\nερωτήματα, και να λάβετε μέρος σε συλλογικές συζητήσεις και να βρείτε τεκμηρίωση για θέματα χαρτογράφησης."
title: Βρίσκοντας Βοήθεια
welcome:
description: Ξεκινήστε με αυτές τις γρήγορες οδηγίες που καλύπτουν τα βασικά OpenStreetMap.
@@ -984,7 +985,7 @@ el:
history: Ιστορικό
home: Μετάβαση στην Τοποθεσία Σπιτιού
intro_2_create_account: Δημιουργήστε ένα λογαριασμό χρήστη
- intro_header: Καλώς ήλθατε στο OpenStreetMap!
+ intro_header: Καλώς ήρθατε στο OpenStreetMap!
intro_text: Το OpenStreetMap είναι χάρτης του κόσμου, που δημιουργήθηκε από ανθρώπους σαν κι εσάς και είναι δωρεάν, υπό άδεια ελεύθερης χρήσης.
learn_more: Μάθετε Περισσότερα
log_in: Είσοδος
@@ -1018,11 +1019,13 @@ el:
attribution_example:
alt: Παράδειγμα του πως αναφέρεται το OpenStreetMap σε μια ιστοσελίδα
title: Παράδειγμα αναφοράς δημιουργού
+ contributors_at_html: "Αυστρία: Περιέχει δεδομένα από τα\nStadt Wien (υπό CC BY),\nLand Vorarlberg και\nLand Tirol (υπό CC BY AT με τροποποιήσεις)."
contributors_footer_1_html: "Για περισσότερες λεπτομέρειες σχετικά με αυτές, και άλλες πηγές που χρησιμοποιήθηκαν\nγια να βελτιώσουν το OpenStreetMap, παρακαλούμε δείτε τη σελίδα Συνεισφέροντες στο OpenStreetMap Wiki."
contributors_fr_html: "Γαλλία: Περιέχει δεδομένα που προέρχονται από το Direction Générale des Impôts."
contributors_intro_html: "Οι συνεισφέροντες μας είναι χιλιάδες άτομα. Επίσης έχουμε περιλάβει δεδομένα ανοικτής άδειας από εθνικές υπηρεσίες χαρτογράφησης και άλλες πηγές, μεταξύ αυτών:"
contributors_nl_html: "Ολλανδία: Περιέχει δεδομένα που προέρχονται από το AND © 2007 (www.and.com)"
contributors_title_html: Οι συνεισφέροντές μας
+ contributors_za_html: "Νότια Αφρική: Περιεχέι δεδομένα που προέρχονται από το\nChief Directorate:\nNational Geo-Spatial Information, Πνευματικό δικαίωμα χώρας κατοχυρωμένο."
credit_1_html: "Απαιτείται να χρησιμοποιείτε την αναφορά στο “© Συνεισφέροντες του\nOpenStreetMap”."
credit_2_html: "Επίσης πρέπει να κάνετε σαφές ότι τα δεδομένα διατίθενται υπό την άδεια Open\nDatabase License, και αν χρησιμοποιείτε τα πλακίδια χάρτη, ότι η χαρτογραφία είναι υπό την άδεια CC-BY-SA. Μπορείτε να το κάνετε αυτό με σύνδεσμο σε αυτήν τη σελίδα δικαιωμάτων.\nΕναλλακτικά, και σαν προαπαιτούμενο εάν διαμοιράζετε δεδομένα OSM, μπορείτε να δώσετε απευθείας σύνδεσμο προς τις άδειες. Σε μέσα στα οποία οι σύνδεσμοι δεν είναι εφικτοί (π.χ. εκτυπώσεις), προτείνουμε να κατευθύνετε τους αναγνώστες σας στο openstreetmap.org (ίσως επεκτείνοντας το «OpenStreetMap» σε αυτήν τη πλήρη διεύθυνση), προς opendatacommons.org, και αναλόγως στο creativecommons.org."
credit_3_html: "Για έναν ηλεκτρονικά εμφανιζόμενο χάρτη, η αναφορά θα πρέπει να εμφανίζεται στη γωνία του χάρτη.\nΓια παράδειγμα:"
@@ -1547,7 +1550,7 @@ el:
public editing:
disabled: Απενεργοποιήθηκε και δεν μπορείτε να επεξεργαστείτε δεδομένα, όλες οι προηγούμενες επεξεργασίες είναι ανώνυμες.
disabled link text: γιατί δεν μπορώ να επεξεργαστώ τον χάρτη;
- enabled: Ενεργοποιήθηκε. Δεν είστε πια ανώνυμος και μπορείτε να επεξεργαστείτε δεδομένα.
+ enabled: Ενεργοποιήθηκε. Δεν είστε πια ανώνυμοι και μπορείτε να επεξεργαστείτε δεδομένα.
enabled link: http://wiki.openstreetmap.org/wiki/Anonymous_edits
enabled link text: τι είναι αυτό;
heading: "Δημόσια επεξεργασία:"
@@ -1872,7 +1875,7 @@ el:
way_html: Οι διαδρομές είναι γραμμές ή περιοχές, όπως δρόμοι, ρέματα, λίμνες ή κτήρια.
introduction_html: Σας καλωσορίζουμε στο OpenStreetMap, τον ελεύθερο και επεξεργάσιμο χάρτη του κόσμου. Τώρα που έχετε εγγραφεί, είστε πανέτοιμοι να αρχίσετε τη χαρτογράφηση. Εδώ είναι ένας γρήγορος οδηγός με τα πιο σημαντικά πράγματα που πρέπει να ξέρετε.
questions:
- paragraph_1_html: "OpenStreetMap έχει πολλαπλους πόρους για να μάθετε σχετικά με το έργο, ερώτηση και απάντηση\nερωτημάτων, και συλλογικές συζητήσης και τεκμηρίωση θεμάτων χαρτογράφησης.\nΛάβετε βοήθεια εδώ."
+ paragraph_1_html: "OpenStreetMap έχει πολλαπλούς πόρους για να μάθετε σχετικά με το έργο, να κάνετε\nερωτήματα, και να λάβετε μέρος σε συλλογικές συζητήσεις και να βρείτε τεκμηρίωση για θέματα χαρτογράφησης.\nΛάβετε βοήθεια εδώ."
title: Ερωτήσεις;
start_mapping: Ξεκινήστε τη Χαρτογράφηση
title: Καλώς ήρθατε!
diff --git a/config/locales/et.yml b/config/locales/et.yml
index def623137..a6253cc47 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -1549,7 +1549,7 @@ et:
new:
about:
header: Vaba ja muudetav
- html: "Erinevalt teistest kaartidest on OpenStreetMap loodud samade inimeste poolt nagu sina ja igaüks võib seda parandada, täiendada, alla laadida ja kasutada.
\nRegistreeru, et alustada kaardi täiendamist. Me saadama sulle meili, et saaksid kinnitada oma kasutajakonto.
"
+ html: "Erinevalt teistest kaartidest on OpenStreetMap loodud samade inimeste poolt nagu sina ja igaüks võib seda parandada, täiendada, alla laadida ja kasutada.
\nRegistreeru, et alustada kaardi täiendamist. Me saadame sulle meili, et saaksid kinnitada oma kasutajakonto.
"
confirm email address: "Kinnita e-posti aadress:"
confirm password: "Kinnita parool:"
contact_webmaster: Palun võta ühendust veebimeistriga, et kasutajakonto luua - me üritame tegeleda selle taotlusega nii kiiresti kui võimalik.
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 031f824a8..9fb0c9ac4 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -183,7 +183,7 @@ fa:
relation: ارتباط
way: راه
start_rjs:
- feature_warning: در حال بارگزاری %{num_features} ویژگی، که ممکن است مرورگرتان را کند یا بدون واکنش سازد. مطمئنید میخواهید این داده ها نمایش داده شوند؟
+ feature_warning: در حال بارگذاری %{num_features} ویژگی، که ممکن است مرورگرتان را کند یا بدون واکنش سازد. مطمئنید میخواهید این دادهها نمایش داده شوند؟
load_data: بارگیری دادهها
loading: در حال بارگیری...
tag_details:
@@ -360,7 +360,7 @@ fa:
description: منابع اضافی ذکر شده در ویکی OpenStreetMap
title: سایر منابع
overpass:
- description: دانلود این جعبه محدوده از یکی از لینک های کمکی دیتابیس OpenStreetMap
+ description: دریافت این جعبه محدوده از یکی از پیوندهای کمکی پایگاه دادههای OpenStreetMap
title: روگذر API
planet:
description: کپی منظم از دیتابیس کامل OpenStreetMap
@@ -956,27 +956,27 @@ fa:
add: افزودن یادداشت
intro: چیزی مشکل دارد؟ به نقشهکشهای دیگر اصلاع دهید تا آن را اصلاح کنند. علامت موشواره را بر روی محلی که مشکل دارد قرار دهید و مشکل را شرح دهید (لطفاً اطلاعات شخصی در این بخش ننویسید)
show:
- anonymous_warning: این یادداشت شامل نظرات کاربران ناشناس است که باید بطور مستقل تایید شوند.
+ anonymous_warning: این یادداشت شامل نظرات کاربران ناشناس است که باید بهطور مستقل تأیید شوند.
comment: نظر
comment_and_resolve: نظر و راه حل
- hide: پنهان کردن
+ hide: نهفتن
reactivate: فعال سازی مجدد
resolve: برطرف کردن
share:
cancel: لغو
center_marker: مرکز نقشه در نشانگر
custom_dimensions: تنظیم ابعاد سفارشی
- download: دانلود
+ download: دریافت
embed: HTML
format: "قالب:"
image: تصویر
image_size: تصویر لایه ی استاندارد را نشان می دهد در
include_marker: شامل نشانگر
- link: لینک یا HTML
+ link: پیوند یا اچتیامال
long_link: پیوند
paste_html: برای درج در وب سایت HTML را جایگذاری کنید
scale: "مقیاس:"
- short_link: لینک کوتاه
+ short_link: پیوند کوتاه
short_url: آدرس کوتاه
title: بهاشتراکگذاری
view_larger_map: نمایش نقشه بزرگتر
@@ -1045,7 +1045,7 @@ fa:
contributors_ca_html: "Canada: Contains data from\nGeoBase®, GeoGratis (© Department of Natural\nResources Canada), CanVec (© Department of Natural\nResources Canada), and StatCan (Geography Division,\nStatistics Canada)."
contributors_fi_html: "Finland: Contains data from the\nNational Land Survey of Finland's Topographic Database\nand other datasets, under the\nNLSFI License."
contributors_footer_1_html: برای اطلاعات بیشتر درباره این منابع و سایر منابع مورد استفاده برای پیشرفت اوپناستریتمپ، لطفاً این پیوند را نگاه کنید.
- contributors_footer_2_html: ورود داده ها در OpenStreetMap به این معنی نیست که ارائه دهنده ی اصلی داده ها توسط OpenStreetMap تایید شده، هر گونه ضمانتی فراهم میکند، یا هر گونه مسئولیت را میپذیرد.
+ contributors_footer_2_html: ورود دادهها در OpenStreetMap به این معنی نیست که ارائهدهندهٔ اصلی دادهها توسط OpenStreetMap تأییدشده، هر گونه ضمانتی فراهم میکند، یا هر گونه مسئولیت را میپذیرد.
contributors_fr_html: "France: Contains data sourced from\nDirection Générale des Impôts."
contributors_gb_html: "United Kingdom: Contains Ordnance\nSurvey data © Crown copyright and database right\n2010-12."
contributors_intro_html: "شرکای ما هزاران شخص هستند. ما همچنین جواز علنی داده از سازمان نقشه برداری ملی و دیگر منابع را شامل میشویم، در بین آنها:"
@@ -1054,7 +1054,7 @@ fa:
contributors_title_html: همکاران ما
contributors_za_html: "South Africa: Contains data sourced from\nChief Directorate:\nNational Geo-Spatial Information, State copyright reserved."
credit_1_html: ما نیاز داریم که شما استفاده کنید از اعتبار “© همکاران OpenStreetMap”.
- credit_2_html: همچنین مطمئن باشید که پاک کردن داده ها تحت یک مجوز دیتابیس باز است، و اگر از کاشی های نقشه ی ما استفاده میکنید، نقشه برداری تحت مجوز CC BY-SA است. میتوانید با لینک دادن به این صفحه حق نشر متناوبا آنرا انجام دهید، و بعنوان یک درخواست اگر شما توزیع کننده ی نوع داده های OSM هستید، میتوانید نام و لینک را بطور مستقیم به مجوز بدهید. در رسانه ها جاهایی که لینک ها مقدور نیستند(مثل کارهای چاپی)، پیشنهاد میکنیم خوانندگان تان را به openstreetmap.org راهنمایی کنید(شاید با گسترش 'OpenStreetMap' به این آدرس کامل)، به opendatacommons.org، و اگر مناسب باشد، به creativecommons.org.
+ credit_2_html: همچنین مطمئن باشید که پاک کردن داده ها تحت یک مجوز دیتابیس باز است، و اگر از کاشیهای نقشهٔ ما استفاده میکنید، نقشهبرداری تحت مجوز CC BY-SA است. میتوانید با پیونددادن به این صفحه حق نشر متناوبا آن را انجام دهید، و بهعنوان یک درخواست اگر شما توزیع کنندهٔ نوع دادههای OSM هستید، میتوانید نام و پیوند را بطور مستقیم به مجوز بدهید. در رسانهها جاهایی که پیوندها مقدور نیستند(مثل کارهای چاپی)، پیشنهاد میکنیم خوانندگانتان را به openstreetmap.org راهنمایی کنید(شاید با گسترش 'OpenStreetMap' به این نشانی کامل)، به opendatacommons.org، و اگر مناسب باشد، به creativecommons.org.
credit_3_html: "برای یک نقشه الکترونیکی قابل مرور، اعتبار باید در گوشه ای از نقشه ظاهر شود.\nبرای مثال:"
credit_title_html: چگونه از OpenStreetMap اعتبار بگیریم
infringement_1_html: شرکای OSM یادآوری میکنند هرگز داده ای را از منابع حق نشر اضافه نکنید(مثلا نقشه های گوگل یا نقشه های چاپ شده) بدون اجازه صریح از دارندگان حق تکثیر.
@@ -1183,7 +1183,7 @@ fa:
greeting: سلام ،
hopefully_you: کسی (امیدواریم شما) میخواهد آدرس ایمیلش را تغییر دهد از %{server_url} به %{new_address}.
email_confirm_plain:
- click_the_link: اگر این شمایید، برای تایید تغییر روی لینک زیر کلیک کنید.
+ click_the_link: اگر این شمایید، برای تأیید تغییر روی پیوند زیر کلیک کنید.
greeting: سلام ،
hopefully_you: کسی (امیدواریم شما) میخواهد آدرس ایمیلش را تغییر دهد از %{server_url} به %{new_address}.
friend_notification:
@@ -1243,7 +1243,7 @@ fa:
created: کسی (امیدواریم شما) یک حساب در %{site_url} ایجاد کرد.
greeting: سلام،
subject: "[OpenStreetMap] به OpenStreetMap خوش آمدید"
- welcome: بعد از اینکه حسابتان را تایید کردید، ما به شما برخی از اطلاعات اضافی را ارائه میدهیم تا بتوانید شروع کنید.
+ welcome: بعد از اینکه حسابتان را تأیید کردید، ما به شما برخی از اطلاعات اضافی را ارائه میدهیم تا بتوانید شروع کنید.
oauth:
oauthorize:
allow_read_gpx: خواندن پیگیری های GPS شخصی شما.
@@ -1251,7 +1251,7 @@ fa:
allow_to: "برنامه سرویس گیرنده اجازه میدهد به:"
allow_write_api: تغییر نقشه.
allow_write_diary: ایجاد یادداشت روزانه، نظر و ایجاد دوستان.
- allow_write_gpx: بارگزاری پیگیری های GPS.
+ allow_write_gpx: بارگذاری پیگیریهای GPS.
allow_write_notes: تغییر یادداشت ها.
allow_write_prefs: تغییر ترجیحات کاربری شما.
request_access: برنامهٔ %{app_name}%{app_name} درخواست دسترسی به حسابتان %{user} را دارد. لطفاً بررسی کنید که میخواهید برنامه به قابلیتهای زیر دسترسی داشته باشد. ممکن است چند تا یا فقط تعدادی را که دوست دارید انتخاب کنید.
@@ -1263,7 +1263,7 @@ fa:
oauthorize_success:
allowed: شما به برنامه ی %{app_name} اجازه ی دسترسی به حسابتان را دادید.
title: درخواست اجازه دادن مجاز است
- verification: کد تایید %{code} است.
+ verification: کد تأیید %{code} است.
revoke:
flash: شما نشانه را برای %{application} باطل کردید
oauth_clients:
@@ -1279,7 +1279,7 @@ fa:
allow_read_prefs: خواندن ترجیحات کاربرانشان.
allow_write_api: تغییر نقشه.
allow_write_diary: ایجاد یادداشت های روزانه، نظر و ایجاد دوستان.
- allow_write_gpx: بارگزاری پیگیری های GPS.
+ allow_write_gpx: بارگذاری پیگیریهای GPS.
allow_write_notes: تغییر یادداشت ها.
allow_write_prefs: تغییر ترجیحات کاربرانشان.
callback_url: آدرس پاسخ به تماس
@@ -1310,7 +1310,7 @@ fa:
allow_read_prefs: خواندن ترجیحات کاربرانشان.
allow_write_api: تغییر نقشه.
allow_write_diary: ایجاد یادداشت های روزانه، نظر و ایجاد دوستان.
- allow_write_gpx: بارگزاری پیگیری های GPS.
+ allow_write_gpx: بارگذاری پیگیریهای GPS.
allow_write_notes: تغییر یادداشت ها.
allow_write_prefs: تغییر ترجیحات کاربرانشان.
authorize_url: "آدرس authorise:"
@@ -1374,9 +1374,9 @@ fa:
js_2: OpenStreetMap برای لیز خوردن نقشه هایش از جاوا اسکریپت استفاده می کند.
license:
copyright: حق نشر OpenStreetMap و شرکا، تحت یک مجوز باز است
- permalink: لینک ثابت
+ permalink: پیوند ثابت
remote_failed: ویرایش ناموفق - مطمئن شوید JOSM یا Merkaartor لوذ شده و گزینه ی کنترل از راه دور فعال است
- shortlink: لینک کوتاه
+ shortlink: پیوند کوتاه
key:
table:
entry:
@@ -1475,7 +1475,7 @@ fa:
trace:
create:
trace_uploaded: پروندهٔ GPX شما بارگذاری شده است و در انتظار درج در پایگاه داده است. این کار معمولاً نیم ساعت طول میکشد و در صورت تکمیل، رایانامهای به شما فرستاده خواهد شد.
- upload_trace: بارگزاری پیگیری GPS
+ upload_trace: بارگذاری پیگیری GPS
delete:
scheduled_for_deletion: پیگیری برای حذف برنامه ریزی شده
description:
@@ -1485,7 +1485,7 @@ fa:
description_without_count: پرونده GPX از %{user}
edit:
description: "شرح:"
- download: دانلود
+ download: دریافت
edit: ویرایش
filename: "نام پرونده:"
heading: ویرایش پیگیری %{name}
@@ -1557,7 +1557,7 @@ fa:
view:
delete_track: حذف این پیگیری
description: "شرح:"
- download: دانلود
+ download: دریافت
edit: ویرایش
edit_track: ویرایش این پیگیری
filename: "نام پرونده:"
@@ -1630,13 +1630,13 @@ fa:
update home location on click: وقتی روی نقشه کلیک میکنم موقعیت خانه بروز شود؟
confirm:
already active: این حساب کاربری در حال حاضر تأیید شده است.
- button: تایید
+ button: تأیید
heading: رایانامهیتان را بررسی کنید!
introduction_1: یک رایانامه تأیید به شما ارسال کردیم.
introduction_2: حسابتان را با کلیک روی پیوندی که در رایانامهیتان بود تأیید کنید و قادر خواهید بود نقشهکشی را شروع کنید.
- press confirm button: برای فعالسازی حساب تان روی دکمه ی تایید زیر کلیک کنید.
+ press confirm button: برای فعالسازی حساب تان روی دکمه ی تأیید زیر کلیک کنید.
reconfirm_html: اگر نیاز دارید رایانامه تأیید را دوباره بفرستیم، اینجا کلیک کنید.
- unknown token: کد تایید منقضی شده یا وجود ندارد.
+ unknown token: کد تأیید منقضی شده یا وجود ندارد.
confirm_email:
button: تأیید
failure: یک نشانی رایانامه در حال حاضر با این نشانه تأیید شدهاست.
@@ -1645,16 +1645,16 @@ fa:
success: نشانی رایانامهیتان تأیید شد، با تشکر از شما برای ثبت نام!
confirm_resend:
failure: کاربر %{name} یافت نشد.
- success: ما نکته ی تایید جدیدی به %{email} فرستادیم و به محض اینکه شما حسابتان را تایید کنید شما قابلیت نقشه کشی را خواهید داشت.
اگر شما از یک سیتم ضد هرزنامه استفاده میکنید که درخواست های تایید را میفرستد مطمئن شوید webmaster@openstreetmap.org را در لیست سفید گذاشته اید که ما قادر به پاسخ به هیچ درخواست تاییدی نیستیم.
+ success: ما نکتهٔ تأیید جدیدی به %{email} فرستادیم و به محض اینکه شما حسابتان را تأیید کنید شما قابلیت نقشه کشی را خواهید داشت.
اگر شما از یک سیتم ضد هرزنامه استفاده میکنید که درخواست های تأیید را میفرستد مطمئن شوید webmaster@openstreetmap.org را در لیست سفید گذاشتهاید که ما قادر به پاسخ به هیچ درخواست تأییدی نیستیم.
filter:
not_an_administrator: برای انجام آن عملیات نیاز هست که سرپرست باشید
go_public:
flash success: تمام ویرایشهای شما اکنون عمومی اند، و شما برای ویرایش مجاز هستید.
list:
- confirm: تایید کاربران انتخاب شده
+ confirm: تأیید کاربران انتخابشده
empty: هیچ کاربر مشابهی یافت نشد
heading: کاربران
- hide: پنهان کردن کاربران انتخاب شده
+ hide: پنهانکردن کاربران انتخاب شده
showing:
one: صفحه %{page} (%{first_item} از %{items})
other: صفحه %{page} (%{first_item}-%{last_item} از %{items})
@@ -1709,7 +1709,7 @@ fa:
lost_password:
email address: "نشانی رایانامه:"
heading: کلمه عبور خود را فراموش کردهاید؟
- help_text: ایمیلی را که هنگام ثبت نام استفاده کرده اید وارد کنید، ما لینکی به آن می فرستیم تا بتوانید بوسیله ی آن کلمه عبورتان را مجدد تنظیم کنید.
+ help_text: ایمیلی را که هنگام ثبت نام استفاده کردهاید وارد کنید، ما پیوندی به آن میفرستیم تا بتوانید به وسیلهٔ آن رمز عبورتان را مجدد تنظیم کنید.
new password button: تنظیم مجدد کلمه عبور
notice email cannot find: نشانی رایانامه یافت نشد، متأسفیم.
notice email on way: متاسفیم که آنرا گم کرده اید :-( اما ایمیلی در راه است که میتوانید بزودی آنرا مجدد تنظیم کنید.
@@ -1725,7 +1725,7 @@ fa:
header: رایگان و قابل ویرایش
html: "بر خلاف سایر نقشهها، OpenStreetMap کاملاً توسط افرادی مثل شما ساختهشده و برای تعمیر، بهروزرسانی، دریافت و استفاده برای هر کسی آزاد است.
\nبرای شروع کمک ثبت نام کنید. برای تأیید حسابتان رایانامهای میفرستیم.
"
confirm email address: "تأیید نشانی رایانامه:"
- confirm password: "تایید کلمه عبور:"
+ confirm password: "تأیید گذرواژه:"
contact_webmaster: لطفاً با مدیر سایت برای ساختن حساب کاربری هماهنگی کنید و تماس بگیرید - ما سعی میکنیم به درخواست ها به سرعت پاسخ دهیم.
continue: ثبت نام
display name: "نام نمایشی:"
@@ -1756,7 +1756,7 @@ fa:
not_a_friend: "%{name} یکی از دوستان شما نیست."
success: "%{name} از دوستان شما حذف شدهاست."
reset_password:
- confirm password: "تایید کلمه عبور:"
+ confirm password: "تأیید گذرواژه:"
flash changed: کلمه عبور شما تغییر کرده است.
flash token bad: نشانه را نیافتید؟ آدرس را برسی کنید شاید یافتید.
heading: تنظیم مجدد کلمه عبور برای %{user}
@@ -1794,7 +1794,7 @@ fa:
blocks on me: بلوک های بر من
comments: نظرات
confirm: تأیید
- confirm_user: تایید این کاربر
+ confirm_user: تأیید این کاربر
create_block: بلوک کردن این کاربر
created from: "ایجادشده از:"
ct accepted: پذیرفته شده %{ago} قبل
@@ -1951,14 +1951,14 @@ fa:
are_you_sure: آیا اطمینان دارید که می خواهید نقش '%{role}' را به کاربر '%{name}' اعطا کنید؟
confirm: تأیید
fail: "%{name} نمیتوان نقش %{role} کاربر %{name} را اعطا کرد . لطفاً از معتبربودن کاربر و نقش اطمینان حاصل نمایید."
- heading: تایید اعطای نقش
- title: تایید اعطای نقش
+ heading: تأیید اعطای نقش
+ title: تأیید اعطای نقش
revoke:
are_you_sure: آیا شما اطمینان دارید که می خواهید نقش `%{role}' را از کاربر '%{name}' لغو نمایید؟
confirm: تأیید
fail: نمیتوان نقش %{role} کاربر %{name} را لغو کرد. لطفاً از معتبربودن کاربر و نقش اطمینان حاصل نمایید.
- heading: تایید ابطال نقش
- title: تایید ابطال نقش
+ heading: تأیید ابطال نقش
+ title: تأیید ابطال نقش
welcome_page:
add_a_note:
paragraph_1_html: "اگر فقط چیزهای کوچکی را میخواهید ترمیم کنید و زمانی برای ثبت نام و یادگیری ویرایش ندارید، \nافزودن یک یادداشت خیلی ساده است."
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index e7b328110..f7e03b240 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -137,7 +137,7 @@ gl:
closed_title: Nota resolta nº%{note_name}
commented_by: Comentado por %{user} hai %{when}
commented_by_anonymous: Comentado por un anónimo hai %{when}
- description: "Descrición:"
+ description: Descrición
hidden_by: Agochado por %{user} hai %{when}
hidden_title: Nota agochada nº%{note_name}
new_note: Nova nota
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 87f09c629..fcbe8d80b 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -145,6 +145,7 @@ he:
hidden_title: הערה מוסתרת מס' %{note_name}
new_note: הערה חדשה
open_by: נוצר על ידי %{user} לפני %{when}
+ open_by_anonymous: נוצר בידי אנונימי לפני %{when}
open_title: הערה שלא נפתרה מס' %{note_name}
title: "הערה: %{id}"
part_of: חלק מתוך
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index e2c5993f2..abf442c50 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -1468,7 +1468,7 @@ ja:
search_results: 検索結果
time:
formats:
- friendly: "%Y年%B月%e日 %H:%M"
+ friendly: "%Y年%B%e日 %H:%M"
trace:
create:
trace_uploaded: GPX ファイルをアップロードしました。データベースへの登録に多少時間がかかります。通常この作業は 30 分以内に完了し、それをお知らせするメールをお送りします。
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 180b28eee..ac4ddce17 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -145,7 +145,7 @@ ko:
closed_title: "해결된 참고 #%{note_name}"
commented_by: "%{user} 사용자가 %{when} 전에 덧글을 남김"
commented_by_anonymous: 익명이 %{when} 전에 덧글을 남김
- description: "설명:"
+ description: 설명
hidden_by: "%{user} 사용자가 %{when} 전에 숨김"
hidden_title: "숨겨진 참고 #%{note_name}"
new_note: 새 참고
@@ -213,7 +213,7 @@ ko:
area: 지역
comment: 설명
id: ID
- saved_at: 저장 시간
+ saved_at: 저장된 시간
user: 사용자
list:
empty: 찾은 바뀜집합이 없습니다.
@@ -249,7 +249,7 @@ ko:
zero: 덧글 없음
comment_link: 이 항목에 덧글 남기기
confirm: 확인
- edit_link: 이 항목 수정
+ edit_link: 이 항목 편집
hide_link: 이 항목 숨기기
posted_by: "%{link_user} 사용자가 %{language_link}로 %{created}에 게시함"
reply_link: 이 항목에 답변하기
@@ -304,7 +304,7 @@ ko:
title: "%{user}의 일기 | %{title}"
user_title: "%{user}의 일기"
editor:
- default: 기본 값 (현재 %{name})
+ default: 기본값 (현재 %{name})
id:
description: iD (브라우저 내 편집기)
name: iD
@@ -330,7 +330,7 @@ ko:
latitude: "위도:"
licence: 라이선스
longitude: "경도:"
- manually_select: 다른 지역 선택
+ manually_select: 수동으로 다른 지역 선택
map_image: 지도 그림 (표준 레이어 보이기)
max: 최대
options: 설정
@@ -994,7 +994,7 @@ ko:
home: 집 위치로 가기
intro_2_create_account: 사용자 계정을 만드세요
intro_header: OpenStreetMap에 오신 것을 환영합니다!
- intro_text: OpenStreetMap은 여러분과 같은 사람이 만들고 자유롭게 오픈 라이선스에 따라 사용할 수 있는, 세계 지도입니다.
+ intro_text: OpenStreetMap은 여러분과 같은 사람들이 만들고 자유롭게 오픈 라이선스에 따라 사용할 수 있는, 세계 지도입니다.
learn_more: 더 알아보기
log_in: 로그인
log_in_tooltip: 기존 계정으로 로그인
@@ -1275,19 +1275,19 @@ ko:
support_url: 지원 URL
url: 주요 애플리케이션 URL
index:
- application: 응용 프로그램 이름
+ application: 애플리케이션 이름
issued_at: 발행
list_tokens: "다음 토큰이 내 이름으로 애플리케이션에 발급했습니다:"
my_apps: 내 클라이언트 애플리케이션
my_tokens: 내 인증한 애플리케이션
no_apps: "%{oauth} 표준을 사용하여 OpenStreetMap과 함께 사용하기 위해 등록할 애플리케이션이 있습니까? 이 서비스에 OAuth를 요청하기 전에 웹 애플리케이션을 등록해야 합니다."
register_new: 내 애플리케이션 등록
- registered_apps: "등록한 다음 클라이언트 응용 프로그램이 있습니다:"
+ registered_apps: "등록된 다음 클라이언트 애플리케이션이 있습니다:"
revoke: 해제!
title: 내 OAuth 자세한 정보
new:
submit: 등록
- title: 새 응용 프로그램 등록
+ title: 새 애플리케이션 등록
not_found:
sorry: 죄송합니다, 해당 %{type}(을)를 찾을 수 없습니다.
show:
@@ -1709,7 +1709,7 @@ ko:
new:
about:
header: 자유롭고 편집 가능
- html: "다른 지도와는 달리, OpenStreetMap은 완전히 여러분과 같은 사람이 만들고,\n누구나 자유롭게 고치고, 업데이트하고, 다운로드하고 사용할 수 있습니다.
\n기여를 시작하려면 가입하세요. 계정을 확인하는 이메일을 보내드립니다.
"
+ html: "다른 지도와는 달리, OpenStreetMap은 완전히 여러분과 같은 사람들이 만들고,\n누구나 자유롭게 고치고, 업데이트하고, 다운로드하고 사용할 수 있습니다.
\n기여를 시작하려면 가입하세요. 계정을 확인하는 이메일을 보내드립니다.
"
confirm email address: "이메일 주소 확인:"
confirm password: "비밀번호 확인:"
contact_webmaster: 계정을 만들 수 있도록 웹마스터에게 문의하세요. 희망에 대응하기 위해 노력하고 가능한 빨리 요청을 처리합니다.
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index d4bc201ff..3e183235b 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -33,7 +33,7 @@ lv:
language: Valoda
latitude: Platums
longitude: Garums
- title: Virsraksts
+ title: Temats
user: Lietotājs
friend:
friend: Draugs
@@ -42,7 +42,7 @@ lv:
body: Teksts
recipient: Saņēmējs
sender: Sūtītājs
- title: Nosaukums
+ title: Temats
trace:
description: Apraksts
latitude: Platums
@@ -148,7 +148,7 @@ lv:
closed_title: "Atrisināta piezīme: #%{note_name}"
commented_by: Komentārs no %{user} %{when} atpakaļ
commented_by_anonymous: Komentārs no anonīma %{when} atpakaļ
- description: "Apraksts:"
+ description: Apraksts
hidden_by: Paslēpa %{user} %{when} atpakaļ
hidden_title: "Paslēpta piezīme #%{note_name}"
new_note: Jauna piezīme
@@ -361,6 +361,10 @@ lv:
title: OSM Planēta
zoom: Palielināt
title: Eksportēt
+ fixthemap:
+ how_to_help:
+ title: Kā palīdzēt
+ title: Ziņot par problēmu / Labot karti
geocoder:
description:
title:
diff --git a/config/locales/nb.yml b/config/locales/nb.yml
index 6ca14f8ca..3364776e8 100644
--- a/config/locales/nb.yml
+++ b/config/locales/nb.yml
@@ -16,6 +16,7 @@
# Author: 6400
nb:
about_page:
+ community_driven_title: Fellesskapsdrevet
copyright_html: ©OpenStreetMap
bidragsytere
lede_text: OpenStreetMap er bygd av et fellesskap av kartleggere som oppretter og vedlikeholder data om veier, stier, kafeer, jernbanestasjoner og diverse annet, over hele verdien.
local_knowledge_html: OpenStreetMap understreker viktigheten av lokalkunnskap. Bidragsytere bruker flyfotografier, GPS-enheter og enkle feltkart for å gå god for at OSM er nøyaktig og oppdatert.
@@ -145,7 +146,7 @@ nb:
closed_title: "Avklart merknad: #%{note_name}"
commented_by: Kommentar fra %{user} %{when} siden
commented_by_anonymous: Kommentar fra anonym bruker %{when} siden
- description: "Beskrivelse:"
+ description: Beskrivelse
hidden_by: Skjult av %{user} %{when} siden
hidden_title: "Skjult notis #%{note_name}"
new_note: Ny notis
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index e10017dbd..a2685f98f 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -80,6 +80,9 @@ oc:
way: Camin
way_node: Nosèl del camin
way_tag: Balisa del camin
+ application:
+ require_moderator:
+ not_a_moderator: Vos cal èsser moderator per efectuar aquesta accion.
browse:
anonymous: anonim
changeset:
@@ -140,7 +143,7 @@ oc:
part_of: Partida de
redacted:
message_html: La version %{version} d'aqueste(-a) %{type} pòt pas èsser afichada perque es estada amagada. Consultatz %{redaction_link} per mai d'informacions.
- redaction: Amagatge %{id}
+ redaction: Redaccion %{id}
type:
node: nosèl
relation: relacion
@@ -880,11 +883,13 @@ oc:
weir: Barratge
help_page:
help:
+ description: Pausar una question o cercar de responsas sul site questions-e-responsas d'OSM.
title: help.openstreetmap.org
url: https://help.openstreetmap.org/
introduction: OpenStreetMap a mantuna ressorsas per aprene lo projècte, per pausar e respondre a de questions, e respondre a de questions, e per discutir en collaboracion amb d’autres e documentar los subjèctes de cartografia.
title: Obténer d’ajuda
welcome:
+ description: Començar amb aqueste guida rapid que cobrís las basas d'OpenStreetMap.
title: Benvenguda a OSM
url: /welcome
wiki:
@@ -896,6 +901,7 @@ oc:
key:
title: Legenda
tooltip: Legenda
+ tooltip_disabled: La legenda es pas disponibla que pel jaç estandard
map:
base:
cycle_map: Mapa ciclista
@@ -908,8 +914,10 @@ oc:
data: Donadas de mapa
header: Jaces de mapa
notes: Nòtas de la mapa
+ overlays: Autorizar las superposicions per reparar la mapa
title: Jaces
locate:
+ popup: Sètz a {distance} {unit} d'aqueste punt
title: Afichar mon emplaçament
zoom:
in: Zoom avant
@@ -1004,6 +1012,8 @@ oc:
title: Exemple d'atribucion
contributors_fr_html: "França : conten de donadas de la\n Direccion generala dels impòts."
contributors_title_html: Nòstres contributors
+ credit_1_html: Demandam que vòstre crèdit compòrta la mencion « © los contributors d’OpenStreetMap ».
+ credit_3_html: "Per una mapa electronica navigabla, lo crèdit deuriá aparéisser dins lo canton de la mapa.\nPer exemple :"
credit_title_html: Cossí creditar OpenStreetMap
infringement_title_html: Violacion dels dreches d'autor
intro_1_html: "OpenStreetMap es un ensemble de donadas dobèrtas, disponiblas jos la licéncia Open Data Commons Open Database License (ODbL)."
@@ -1046,6 +1056,7 @@ oc:
new:
back_to_inbox: Tornar a la bóstia de recepcion
body: Còs
+ limit_exceeded: Avètz enviat tròp de messatges recentament, esperatz un moment abans d'ensajar de ne mandar de novèls.
message_sent: Messatge mandat
send_button: Mandar
send_message_to: Mandar un messatge novèl a %{name}
@@ -1062,6 +1073,7 @@ oc:
one: Avètz %{count} messatge mandat
other: Avètz %{count} messatges mandats
my_inbox: Ma %{inbox_link}
+ no_sent_messages: Avètz pas encara mandat cap de messatge. Perqué entrar pas en contacte amb qualques %{people_mapping_nearby_link} ?
outbox: bóstia de mandadís
people_mapping_nearby: personas pròcha de vos
subject: Subjècte
@@ -1076,6 +1088,9 @@ oc:
title: Legir lo messatge
to: A
unread_button: Marcar coma pas legit
+ wrong_user: Sètz identificat(-ada) coma « %{user} » mas lo messatge qu'ensajatz de legir es pas estat enviat a vos o a aqueste utilizaire. Connectatz-vos amb l'identificant corrècte per lo poder legir.
+ reply:
+ wrong_user: Sètz identificat(-ada) coma « %{user} » mas lo messatge al qual volètz respondre es pas estat enviat a aqueste utilizaire. Connectatz-vos amb l'identificant corrècte per poder respondre.
sent_message_summary:
delete_button: Suprimir
note:
@@ -1099,6 +1114,7 @@ oc:
heading: Nòtas de %{user}
id: Id
last_changed: Darrièr cambiament
+ subheading: Nòtas somesas o comentadas per %{user}
title: Nòtas somesas o comentadas per %{user}
rss:
closed: nòta tampada (prèp de %{place})
@@ -1114,8 +1130,10 @@ oc:
email_confirm:
subject: "[OpenStreetMap] Confirmacion de vòstra adreça de corrièr electronic"
email_confirm_html:
+ click_the_link: Se sètz vos, clicatz sul ligam çaijós per confirmar aquesta la modificacion.
greeting: Bonjorn,
email_confirm_plain:
+ click_the_link: Se sètz a l'origina d'aquesta requèsta, clicatz sul ligam çaijós per confirmar aquesta modificacion.
greeting: Bonjorn,
friend_notification:
befriend_them: "Tanben, lo podètz apondre coma amic aicí : %{befriendurl}."
@@ -1138,19 +1156,34 @@ oc:
lost_password:
subject: "[OpenStreetMap] Demanda de reïnicializacion del senhal"
lost_password_html:
+ click_the_link: Se sètz vos, clicatz sul ligam çaijós per reïnicializar vòstre senhal.
greeting: Bonjorn,
lost_password_plain:
+ click_the_link: Se sètz a l'origina d'aquesta requèsta, clicatz sul ligam çaijós per reïnicializar vòstre senhal.
greeting: Bonjorn,
message_notification:
hi: Bonjorn %{to_user},
note_comment_notification:
anonymous: Un utilizaire anonim
+ closed:
+ commented_note: "%{commenter} a resolgut una nòta de mapa qu'avètz comentada. La nòta es pròcha de %{place}."
+ subject_other: "[OpenStreetMap] %{commenter} que vis i interessàvetz."
+ subject_own: "[OpenStreetMap] %{commenter} a resolgut una de vòstras nòtas"
+ your_note: "[OpenStreetMap] %{commenter} a resolgut una de vòstras nòtas prèp de %{place}."
commented:
+ commented_note: "%{commenter} a daissat un comentari sus una de vòstras nòtas de mapa qu'avètz comentada. La nòta es pròcha de %{place}."
subject_other: "[OpenStreetMap] %{commenter} a comentat una nòta a la quala vos interessatz"
subject_own: "[OpenStreetMap] %{commenter} a comentat una de vòstras nòtas"
+ your_note: "%{commenter} a daissat un comentari sus una de vòstras nòtas de mapa prèp de %{place}."
details: Mai de detalh sus la nòta pòt èsser obtengut a %{url}.
greeting: Bonjorn,
+ reopened:
+ commented_note: "%{commenter} a reactivat una nòta de mapa qu'avètz comentada. La nòta se tròba prèp de %{place}."
+ subject_other: "[OpenStreetMap] %{commenter} a reactivat una nòta a que vos i interessàvetz"
+ subject_own: "[OpenStreetMap] %{commenter} a reactivat una de vòstras nòtas"
+ your_note: "%{commenter} a reactivat una de vòstras nòtas de mapa prèp de %{place}."
signup_confirm:
+ created: Qualqu'un (vos, amb un pauc d'astre) ven juste de crear un compte sus %{site_url}.
greeting: Bonjorn !
subject: "[OpenStreetMap] Benvenguda dins OpenStreetMap"
oauth:
@@ -1165,9 +1198,11 @@ oc:
allow_write_prefs: modificar vòstras preferéncias d'utilizaire.
title: Autorizar l’accès a vòstre compte
oauthorize_failure:
+ denied: Avètz refusat a l’aplicacion %{app_name} l’accès a vòstre compte.
invalid: Lo geton d’autorizacion es invalid.
title: La demanda d’autorizacion a fracassat
oauthorize_success:
+ allowed: Avètz acordat a l’aplicacion %{app_name} l’accès a vòstre compte.
title: La demanda d’autorizacion es estada acceptada
verification: Lo còde de verificacion es %{code}.
revoke:
@@ -1197,6 +1232,7 @@ oc:
index:
application: Nom de l'aplicacion
issued_at: Emés lo
+ list_tokens: "Los getons seguents son estats emeses a las aplicacions en vòstre nom :"
my_apps: Mas aplicacions clientas
my_tokens: Mas aplicacions enregistradas
register_new: Enregistratz vòstra aplicacion
@@ -1222,27 +1258,40 @@ oc:
delete: Suprimir lo client
edit: Modificar los detalhs
key: "Clau de l'utilizaire :"
+ requests: "Demanda las permissions seguentas a l'utilizaire :"
secret: "Secret de l'utilizaire :"
+ support_notice: Suportam las signaturas HMAC-SHA1 (recomandat) e RSA-SHA1.
title: Detalhs OAuth per %{app_name}
url: "URL del geton de requèsta :"
update:
flash: Informacions del client enregistradas amb succès
redaction:
+ create:
+ flash: Redaccion creada.
+ destroy:
+ error: I a agut una error en suprimissent aquesta redaccion.
+ flash: Redaccion suprimida.
edit:
description: Descripcion
heading: Modificar la redaccion
- submit: Enregistrar l'amagatge
+ submit: Enregistrar la redaccion
title: Modificar la redaccion
index:
- empty: Pas cap d'amagatge d'afichar.
+ empty: Pas cap de redaccion d'afichar.
heading: Lista de redaccions
title: Lista de redaccions
new:
description: Descripcion
- submit: Crear l'amagatge
+ heading: Picatz las informacions sus la novèla redaccion
+ submit: Crear la redaccion
+ title: Crear una redaccion novèla
show:
confirm: Sètz segur ?
description: "Descripcion :"
+ destroy: Suprimir aquesta redaccion
+ edit: Modificar aquesta redaccion
+ heading: Afichatge de la redaccion "%{title}"
+ title: Afichatge de la redaccion
user: "Creator :"
update:
flash: Modificacions enregistradas.
@@ -1251,9 +1300,13 @@ oc:
anon_edits_link_text: Trobatz perqué aicí.
id_not_configured: iD es pas estat configurat
not_public: Avètz pas reglat vòstras modificacions per que sián publicas.
+ potlatch2_unsaved_changes: Avètz de modificacions pas salvadas. (Per salvar vòstras modificacions dins Potlach2, clicar sus "enregistrar".)
user_page_link: pagina d'utilizaire
index:
createnote: Apondre una nòta
+ js_2: OpenStreetMap utiliza Javascript per sas mapas lisantas.
+ license:
+ copyright: Copyright OpenStreetMap e sos contributors, jos una licéncia dobèrta
permalink: Ligam permanent
shortlink: Ligam cort
key:
@@ -1391,6 +1444,7 @@ oc:
made_public: Pista renduda publica
offline:
heading: Emmagazinatge GPX fòra linha
+ message: Lo sistèma d'emmagazinatge GPX es actualament indisponible.
offline_warning:
message: Lo sistèma de mandadís GPX es actualament indisponible
trace:
@@ -1449,12 +1503,14 @@ oc:
visibility: "Visibilitat :"
visibility:
private: Privat (partejat anonimament, punts pas ordenats)
+ public: Public (afichat dins la lista de las traças e anonim, punts pas ordenats)
user:
account:
contributor terms:
agreed: Avètz acceptat los novèls tèrmes del contributor.
heading: "Tèrmes del contributor :"
link text: qu’es aquò ?
+ not yet agreed: Avètz pas encara acceptat los novèls tèrmes del contributor.
current email address: "Adreça de corrièr electronic actuala:"
delete image: Suprimir l'imatge actual
email never displayed publicly: (pas jamai afichat publicament)
@@ -1499,6 +1555,7 @@ oc:
button: Confirmar
heading: Verificatz vòstre corrièr electronic !
introduction_1: Vos avèm mandat un corrièl de confirmacion.
+ press confirm button: Quichar lo boton confirmar çaijós per activar vòstre compte.
unknown token: Lo còde de confirmacion a expirat o existís pas.
confirm_email:
button: Confirmar
@@ -1554,6 +1611,7 @@ oc:
register now: S'inscriure ara
remember: Se remembrar de ieu
title: Se connectar
+ to make changes: Per aportar de modificacions a las donadas OpenStreetMap, vos cal possedir un compte.
with openid: "Tanben podètz utilizar OpenID per vos connectar :"
logout:
heading: Desconnexion d'OpenStreetMap
@@ -1580,6 +1638,7 @@ oc:
contact_webmaster: Contactatz lo webmaster per que vos crèe un compte - ensajarem de tractar vòstra demanda lo mai rapidament possible.
continue: S’inscriure
display name: "Nom afichat :"
+ display name description: Vòstre nom d'utilizaire afichat publicament. Podètz cambiar aquò ulteriorament dins las preferéncias.
email address: "Adreça de corrièr electronic :"
openid: "%{logo} OpenID :"
password: "Senhal :"
@@ -1666,6 +1725,7 @@ oc:
nearby_diaries: Entradas de jornal dels utilizaires a proximitat
new diary entry: novèla entrada dins lo jornal
no friends: Avètz pas encara apondut cap d'amic
+ no nearby users: Cap d'utilizaire a pas encara senhalat que cartografiava a proximitat.
notes: Nòtas de mapa
oauth settings: paramètres OAuth
remove as friend: Suprimir en tant qu'amic
@@ -1781,6 +1841,7 @@ oc:
basic_terms:
editor_html: Un editor es un programa o site web que vos permet d'editar la mapa.
node_html: Un nosèl es un punt sus la mapa, coma un restaurant o un arbre individual.
+ paragraph_1_html: OpenStreetMap a son pròpri girgon. Aquí qualques mots claus que vos seràn utiles.
tag_html: "Un tag es una informacion a prepaus d'un nosèl o d'un camin, coma\nlo nom d'un restaurant o la velocitat limita d'una carrièra."
title: Vocabulari de basa de cartografia
way_html: "Un camindiários dos editores,\nblogues da comunidade, e o site da OSM Foundation."
community_driven_title: Dirigido pela comunidade
copyright_html: ©Colaboradores
do OpenStreetMap
+ lede_text: O OpenStreetMap é desenvolvido por uma comunidade voluntária de mapeadores que contribuem e mantêm atualizados os dados sobre estradas, trilhos, cafés, estações ferroviárias e muito mais por todo o mundo.
+ local_knowledge_html: O OpenStreetMap valoriza o conhecimento local. Os colaboradores utilizam fotografias aéreas, dispositivos GPS, e mapas do terreno para verificar que a informação no OpenStreetMap é rigorosa e atualizada.
local_knowledge_title: Conhecimento local
next: Próximo
+ open_data_html: "O OpenStreetMap é constituído por dados abertos: qualquer\npessoa tem a liberdade de usar os dados para qualquer fim desde\ncredite a autoria do OpenStreetMap e os seus colaboradores.\nSe você alterar os dados ou criar algo com os dados, pode distribuir\no produto resultante apenas sob a mesma licença. Consulte a página sobre direitos de autor e licenciamento para mais informações."
+ open_data_title: Data de Abertura
partners_title: Parceiros
+ used_by: O %{name} fornece dados a centenas de sites na internet, aplicações de celular e outros dispositivos
activerecord:
attributes:
diary_comment:
@@ -149,7 +156,7 @@ pt-BR:
closed_title: "Nota resolvida #%{note_name}"
commented_by: Comentado por %{user} há %{when} atrás
commented_by_anonymous: Comentado por um usuário anônimo há %{when} atrás
- description: "Descrição:"
+ description: Descrição
hidden_by: Ocultado por %{user} há %{when} atrás
hidden_title: "Nota oculta #%{note_name}"
new_note: Nova nota
@@ -225,6 +232,9 @@ pt-BR:
empty_area: Nenhum conjunto de alterações nesta área.
empty_user: Nenhum conjunto de alterações por este usuário.
load_more: Carregar mais
+ no_more: Nenhum conjunto de alterações foi encontrado.
+ no_more_area: Não há mais conjunto de alterações nesta área.
+ no_more_user: Não há mais conjunto de alterações para este usuário.
title: Conjuntos de alterações
title_friend: Conjuntos de alterações dos seus amigos
title_nearby: Conjuntos de alterações de usuários próximos
@@ -352,6 +362,9 @@ pt-BR:
other:
description: Fontes adicionais listadas na wiki do OpenStreetMap
title: Outras fontes
+ overpass:
+ description: Fazer o download desta caixa delimitadora através de um espelho do banco de dados do OpenStreetMap
+ title: Overpass API
planet:
description: Cópias regularmente atualizadas da base de dados completa do OpenStreetMap
title: Planeta OSM
@@ -359,9 +372,15 @@ pt-BR:
title: Exportar
fixthemap:
how_to_help:
+ add_a_note:
+ instructions_html: "Apenas clique em ou no mesmo ícone na interface do mapa.\nIsto irá adicionar um marcador ao mapa, o qual pode mover arrastando. Adicione a sua mensagem, clique em salvar, e outros utilizadores como você irão investigar."
join_the_community:
+ explanation_html: Se você reparou num problema com os dados do nosso mapa, como por exemplo uma estrada ou o seu adereço em falta, a melhor maneira de proceder é juntando-se à comunidade do OpenStreetMap e adicionando ou reparando os dados por si mesmo.
title: Junte-se à comunidade
title: Como ajudar
+ other_concerns:
+ explanation_html: Se você tem preocupações sobre o modo como os nossos dados estão a ser usados ou sobre os conteúdos, por favor consulte a nossa página de direitos de autor para mais informações legais, ou contacte o grupo de trabalho OSMF apropriado.
+ title: Outras preocupações
title: Reportar um problema / Corrigir o mapa
geocoder:
description:
@@ -596,6 +615,7 @@ pt-BR:
monument: Monumento
museum: Museu
ruins: Ruínas
+ tomb: Tumba
tower: Torre histórica
wayside_cross: Cruz de beira-de-estrada
wayside_shrine: Túmulo de beira-de-estrada
@@ -894,8 +914,13 @@ pt-BR:
prefix_format: "%{name}"
help_page:
help:
+ description: Faça uma pergunta ou procure por respostas no fórum de perguntas e respostas do OpenStreetMap.
title: help.openstreetmap.org
+ url: http://help.openstreetmap.org/
+ introduction: O OpenStreetMap tem vários recursos para saber mais sobre o projeto, perguntar e responder a questões, e colaborativamente discutir e documentar vários tópicos sobre o mapa.
+ title: Obtendo Ajuda
welcome:
+ description: Comece por este guia rápido sobre os princípios básicos do OpenStreetMap.
title: Bem vindo ao OSM
url: /welcome
wiki:
@@ -966,6 +991,8 @@ pt-BR:
createnote_tooltip: Adicionar uma nota ao mapa
edit_disabled_tooltip: Aumente o zoom para editar o mapa
edit_tooltip: Edite o mapa
+ map_data_zoom_in_tooltip: Zoom para ver dados do mapa
+ map_notes_zoom_in_tooltip: Zoom para ver notas no mapa
layouts:
about: Sobre
community: Comunidade
@@ -1025,6 +1052,7 @@ pt-BR:
title: Exemplo de atribuição
contributors_at_html: "Áustria: Contém dados de \n Stadt Wien (sob licença\n CC BY), \nLand Vorarlberg e \nLand Tirol (sob a licença CC-BY AT com emendas)."
contributors_ca_html: "Canadá: Contém dados do\n GeoBase®, GeoGratis (© Departamento de Recursos\n Naturais do Canadá), CanVec (© Departamento de Recursos\n Naturais do Canadá), and StatCan (Divisão de Geografia e \n Estatística do Canada)."
+ contributors_fi_html: "Finlândia: Dados do Continente do National Land Survey da Finland´s Topographic Database\ne outras bases de dados, em NLSFI Licença."
contributors_footer_1_html: " A inclusão de dados no OpenStreetMap não implica em endosso do provedor dos dados \n ao OpenStreetMap, nem em qualquer garantia, ou\n aceitação de qualquer responsabilidade."
contributors_footer_2_html: "A inclusão de dados no OpenStreetMap não implica que fornecedor \noriginal apoie o OpenStreetMap, ou dê qualquer garantia, ou \naceite qualquer responsabilidade."
contributors_fr_html: "França: Contém dados da\n Direction Générale des Impôts."
@@ -1240,8 +1268,12 @@ pt-BR:
request_access: A aplicação %{app_name} está pedindo acesso à sua conta, %{user}. Por favor verifique se você deseja que a aplicação tenha as capacidades a seguir. Você pode escolher quaisquer que quiser.
title: Autorizar acesso à sua conta
oauthorize_failure:
+ denied: Anulou o acesso do programa %{app_name} à sua conta.
+ invalid: O token de autorização não é válido.
title: O pedido de autorização falhou
oauthorize_success:
+ allowed: Forneceu ao programa %{app_name} o acesso à sua conta.
+ title: Pedido de autorização permitido
verification: O código de verificação é %{code}.
revoke:
flash: Você cancelou o token para %{application}
@@ -1461,6 +1493,9 @@ pt-BR:
delete:
scheduled_for_deletion: Trilha marcada para ser apagada
description:
+ description_with_count:
+ one: Ficheiro GPX com %{count} ponto de %{user}
+ other: Ficheiro GPX com %{count} pontos de %{user}
description_without_count: Arquivo GPX de %{user}
edit:
description: "Descrição:"
@@ -1955,7 +1990,7 @@ pt-BR:
way_html: Um caminho é uma linha ou área, como uma estrada, córrego, lago ou edifício.
introduction_html: Bem vindo ao OpenStreetMap, o mapa livre e editável do mundo. Agora que você se inscreveu, você está pronto para começar a mapear. Aqui está um guia rápido com as coisas mais importantes que você precisa saber.
questions:
- paragraph_1_html: Precisa de ajuda para mapear, ou não está claro como usar o OpenStreetMap? Tenha suas perguntas respondidas no website de ajuda.
+ paragraph_1_html: "O OpenStreetMap tem vários recursos para saber mais sobre o projeto, perguntar e responder a questões, e colaborativamente discutir e documentar vários tópicos sobre o mapa.\nObtenha ajuda aqui"
title: Alguma pergunta?
start_mapping: Iniciando Mapeamento
title: Bem-vindo(a)!
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index 0d41c89f1..32ee10e61 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -14,7 +14,7 @@ ro:
language: Limbă
latitude: Latitudine
longitude: Longitudine
- title: Titlu
+ title: Subiect
user: Utilizator
friend:
friend: Prieten
@@ -23,7 +23,7 @@ ro:
body: Corp
recipient: Destinatar
sender: Expeditor
- title: Titlu
+ title: Subiect
trace:
description: Descriere
latitude: Latitudine
@@ -74,23 +74,31 @@ ro:
way_node: Nod cale
way_tag: Etichetă cale
browse:
+ anonymous: anonim
changeset:
+ belongs_to: Autor
changesetxml: Set de modificări XML
feed:
title: "Set de modificări: %{id}"
title_comment: Set de modificări %{id} — %{comment}
+ node: Noduri (%{count})
+ node_paginated: Noduri (%{x}-%{y} din %{count})
osmchangexml: XML osmChange
- title: Set de modificări
+ title: "Set de modificări: %{id}"
containing_relation:
entry: Relația %{relation_name}
entry_role: Relația %{relation_name} (ca %{relation_role})
+ in_changeset: Set de modificări
+ no_comment: (niciun comentariu)
not_found:
- sorry: Ne pare rău, dar %{type} cu identificatorul %{id} nu a fost găsit.
+ sorry: "Ne pare rău, dar %{type} #%{id} nu s-a putut găsi."
type:
changeset: set de modificări
node: nod
relation: relație
way: drum
+ note:
+ title: "Notă: %{id}"
redacted:
message_html: Nu se poate afișa versiunea %{version} a acestui/acestei %{type} pentru că a fost redactată. Vă rugăm să consultați %{redaction_link} pentru detalii.
redaction: Redactarea %{id}
@@ -108,7 +116,7 @@ ro:
load_data: Încărcare date
loading: Se încarcă...
tag_details:
- tags: "Etichete:"
+ tags: Etichete
wiki_link:
key: Pagina de pe wiki pentru tagul %{key}
tag: Pagina de pe wiki pentru tagul %{key}=%{value}
@@ -120,6 +128,9 @@ ro:
node: nodul
relation: relația
way: calea
+ version: Versiune
+ way:
+ nodes: Noduri
changeset:
changeset:
anonymous: Anonim
@@ -128,7 +139,7 @@ ro:
changeset_paging_nav:
next: Următoarea »
previous: « Precedenta
- showing_page: Se afișează pagina %{page}
+ showing_page: Pagina %{page}
changesets:
area: Zonă
comment: Comentariu
@@ -136,6 +147,13 @@ ro:
saved_at: Salvat la
user: Utilizator
list:
+ empty: Niciun set de modificări găsit.
+ empty_area: Niciun set de modificări în această zonă.
+ empty_user: Niciun set de modificări de la acest utilizator.
+ load_more: Încarcă mai multe
+ no_more: Nu s-au mai găsit seturi de modificări.
+ no_more_area: Nu s-au mai găsit seturi de modificări în această zonă.
+ no_more_user: Nu s-au mai găsit seturi de modificări de la acest utilizator.
title: Set de modificări
title_friend: Seturi de modificări de la prietenii dv.
title_nearby: Modificări de la utilizatori din apropiere
@@ -157,8 +175,9 @@ ro:
hide_link: Ascunde acest comentariu
diary_entry:
comment_count:
- one: un comentariu
+ one: "%{count} comentariu"
other: "%{count} comentarii"
+ zero: niciun comentariu
comment_link: Comentează la această înregistrare
confirm: Confirmă
edit_link: Editează această înregistrare
@@ -193,7 +212,7 @@ ro:
newer_entries: Înregistrări mai noi
no_entries: Nu există înregistrări în jurnal
older_entries: Înregistrări mai vechi
- recent_entries: "Înregistrări recente din jurnal:"
+ recent_entries: Înregistrări recente din jurnal
title: Jurnalele utilizatorilor
title_friends: Jurnalele prietenilor
title_nearby: Jurnalele utilizatorilor aflați în apropiere
@@ -243,6 +262,11 @@ ro:
output: Date de ieșire
scale: Scară
zoom: Zoom
+ title: Exportare
+ fixthemap:
+ how_to_help:
+ join_the_community:
+ title: Alăturați-vă comunității
geocoder:
description:
types:
@@ -629,24 +653,38 @@ ro:
waterfall: Cascadă
weir: Stăvilar
layouts:
- copyright: Drepturi de autor și licență
+ about: Despre
+ community: Comunitate
+ community_blogs: Bloguri ale comunității
+ community_blogs_title: Bloguri ale membrilor comunității OpenStreetMap
+ copyright: Drepturi de autor
edit: Modificare
edit_with: Modificare cu %{editor}
+ foundation: Fundația
+ foundation_title: Fundația OpenStreetMap
help: Ajutor
history: Istoric
home: acasă
- log_in: autentificare
+ learn_more: Aflați mai multe
+ log_in: Autentificare
log_in_tooltip: Autentificare cu un cont existent
logo:
alt_text: Logoul OpenStreetMap
- logout: închide sesiunea
+ logout: Închide sesiunea
make_a_donation:
text: Faceți o donație
- sign_up: înregistrare
+ title: Sprijiniți OpenStreetMap printr-o donație în bani
+ more: Mai multe
+ partners_partners: parteneri
+ sign_up: Înregistrare
sign_up_tooltip: Creați un cont pentru editare
+ start_mapping: Start la cartografiere
license_page:
foreign:
title: Despre această traducere
+ legal_babble:
+ infringement_title_html: Încălcarea drepturilor de autor
+ title_html: Drepturi de autor și licență
native:
title: Despre această pagină
message:
@@ -727,3 +765,7 @@ ro:
flash changed: Parola dumneavoastră a fost schimbată.
password: "Parola:"
reset: Resetează parola
+ welcome_page:
+ questions:
+ title: Întrebări?
+ title: Bun venit!
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index b04969c9b..091c36a23 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -135,7 +135,7 @@ sk:
way: cesta
note:
closed_title: "Vyriešená chyba #%{note_name}"
- description: "Popis:"
+ description: Popis
new_note: Nová poznámka
open_title: "Nevyriešená chyba #%{note_name}"
title: "Poznámka: %{id}"
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index f32646533..2256ded53 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -1055,7 +1055,7 @@ sv:
attribution_example:
alt: Exempel på hur en webbsida kan ange OpenStreetMap som källa
title: Exempel på källhänvisning.
- contributors_at_html: "Österrike: Innehåller data från\nStadt Wien (under licensen\nCC BY),\nLand Vorarlberg och\nLand Tirol (under licensen CC-BY AT med ändringar)."
+ contributors_at_html: "Österrike: Innehåller data från\nStadt Wien (under licensen\nCC BY),\nLand Vorarlberg och\nLand Tirol (under licensen CC BY AT med ändringar)."
contributors_ca_html: "Kanada: Innehåller data från\n GeoBase®, GeoGratis (© Department of Natural\n Resources Canada), CanVec (© Department of Natural\n Resources Canada), och StatCan (Geography Division,\n Statistics Canada)."
contributors_fi_html: "Finland: Innehåller data från Lantmäteriverket i Finlands topografiska databas och andra dataset, under licensen NLSFI."
contributors_footer_1_html: "För ytterligare detaljer om dessa och andra källor som använts\nför att förbättra OpenStreetMap, se sidan om bidragsgivare\npå OpenStreetMaps wiki."
@@ -1068,7 +1068,7 @@ sv:
contributors_title_html: Våra bidragsgivare
contributors_za_html: "Sydafrika: Innehåller data från\nChief Directorate:\nNational Geo-Spatial Information, State copyright reserved."
credit_1_html: "Vi kräver att din källhänvisning består av “© OpenStreetMaps\nbidragsgivare”."
- credit_2_html: "Du måste också göra klart att datan är tillgänglig under licensen\nOpen Database License, och om du använder våra kartrutor, att kartografin är\ntillgänglig under licensen CC-BY-SA. Du kan göra detta genom att länka till\ndenna sida om upphovsrätt.\nAlternativt, och som krav om du distribuerar OSM i dataform, kan du namnge\noch länka direkt till licenserna. I media där länkar ej är möjliga\n(t.ex. tryckt material), förslår vi att du hänvisar dina läsare till openstreetmap.org\n(förslagsvis genom att expandera 'OpenStreetMap' till hela denna adress), till opendatacommons.org, och om relevant till creativecommons.org."
+ credit_2_html: "Du måste också göra klart att datan är tillgänglig under licensen\nOpen Database License, och om du använder våra kartrutor, att kartografin är\ntillgänglig under licensen CC BY-SA. Du kan göra detta genom att länka till\ndenna sida om upphovsrätt.\nAlternativt, och som krav om du distribuerar OSM i dataform, kan du namnge\noch länka direkt till licenserna. I media där länkar ej är möjliga\n(t.ex. tryckt material), förslår vi att du hänvisar dina läsare till openstreetmap.org\n(förslagsvis genom att expandera 'OpenStreetMap' till hela denna adress), till opendatacommons.org, och om relevant till creativecommons.org."
credit_3_html: "För en navigerbar elektronisk karta, ska källhänvisningen synas i ena hörnet av kartan.\nTill exempel:"
credit_title_html: Hur du anger OpenStreetMap som källa
infringement_1_html: "Bidragsgivare till OSM påminns om att aldrig lägga till data från\nupphovsrättsskyddade källor (t.ex. Google Maps och tryckta kartor) utan\nuttryckligt tillstånd från upphovsrättsinnehavarna."
@@ -1076,7 +1076,7 @@ sv:
infringement_title_html: Upphovsrättsintrång
intro_1_html: "OpenStreetMap är öppen data, gjord tillgänglig under licensen Open Data\nCommons Open Database License (ODbL)."
intro_2_html: "Du är fri att kopiera, distribuera, överföra och anpassa vår data,\nså länge du anger OpenStreetMap och dess bidragsgivare som källa.\nOm du ändrar eller bygger vidare på vår data kan du\nendast distribuera resultatet under samma licens. Den\nfullständiga juridiska\ntexten förklarar dina rättigheter och skyldigheter."
- intro_3_html: "Kartografin i våra kartrutor, och vår dokumentation, är\ntillgängliga under licensen Creative\nCommons Attribution-ShareAlike 2.0 (CC-BY-SA)."
+ intro_3_html: "Kartografin i våra kartrutor, och vår dokumentation, är\ntillgängliga under licensen Creative\nCommons Attribution-ShareAlike 2.0 (CC BY-SA)."
more_1_html: "Läs mer om användning av vår data, och hur du anger oss som källa, på vår juridiska\nFAQ."
more_2_html: "Även om OpenStreetMap är öppen data, kan vi inte tillhandahålla något gratis kart-API för tredjepartsutvecklare.\nSe vår användningspolicy för API,\nanvändningspolicy för kartrutor\noch användningspolicy för Nominatim."
more_title_html: Mer information
diff --git a/config/locales/tl.yml b/config/locales/tl.yml
index c28fa4963..3a067881c 100644
--- a/config/locales/tl.yml
+++ b/config/locales/tl.yml
@@ -4,6 +4,7 @@
# Author: AnakngAraw
# Author: Ianlopez1115
# Author: Jewel457
+# Author: Jojit fb
# Author: 아라
tl:
activerecord:
@@ -39,7 +40,7 @@ tl:
display_name: Ipakita ang Pangalan
email: E-liham
languages: Mga wika
- pass_crypt: Hudyat
+ pass_crypt: Password
models:
acl: Talaan ng Pantaban sa Pagpunta
changeset: Pangkat ng pagbabago
@@ -1387,7 +1388,7 @@ tl:
yahoo:
alt: Lumagda sa pamamagitan ng OpenID ng Yahoo
title: Lumagda sa pamamagitan ng Yahoo
- password: "Hudyat:"
+ password: "Password:"
register now: Magpatala na ngayon
remember: "Tandaan ako:"
title: Lumagda
@@ -1400,12 +1401,12 @@ tl:
title: Umalis sa pagkakalagda
lost_password:
email address: "Tirahan ng e-liham:"
- heading: Nakalimutang Hudyat?
+ heading: Nakalimutang Password?
help_text: Ipasok ang tirahan ng e-liham na ginamit mo upang magpatala, ipapadala namin ang isang kawing papunta rito na magagamit mo upang muling maitakda mo ang iyong hudyat.
new password button: Itakda uli ang hudyat
notice email cannot find: Hindi matagpuan ang ganyang tirahan ng e-liham, paumanhin.
notice email on way: Ikinalulungkot na naiwala mo iyan :-( ngunit darating na ang isang e-liham upang maitakda mong muli iyan kaagad.
- title: Naiwalang hudyat
+ title: Naiwalang password
make_friend:
already_a_friend: Kaibigan ka na ni %{name}.
button: idagdag bilang kaibigan
@@ -1426,7 +1427,7 @@ tl:
openid: "%{logo} OpenID:"
openid association: "Ang OpenID mo ay hindi pa nakaugnay sa isang akawnt ng OpenStreetMap.
\n\n - Kung bago ka pa lang sa OpenStreetMap, mangyaring lumikha ng isang bagong akawnt sa pamamagitan ng pormularyong nasa ibaba.
\n - \n Kung mayroon ka nang akawnt, makakalagda ka na sa akawnt mo\n sa pamamagitan ng iyong pangalan ng tagagamit at hudyat at pagkaraan ay iugnay ang akawnt \n sa OpenID mo doon sa loob ng mga katakdaan mo na pangtagagamit.\n
\n
"
openid no password: Hindi kailangan ang hudyat sa OpenID, subalit ang ilan sa dagdag na mga kagamitan o tagapaghain ay maaaring mangailangan ng isa.
- password: "Hudyat:"
+ password: "Password:"
terms accepted: Salamat sa pagtanggap ng bagong mga tuntunin ng tagapag-ambag!
terms declined: Ikinalulungkot namin na nagpasya kang huwag tanggapin ang bagong mga Tuntunin ng Tagapag-ambag. Para sa mas marami pang kabatiran, pakitingnan ang pahinang ito ng wiki.
terms declined url: http://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
@@ -1450,7 +1451,7 @@ tl:
flash changed: Napalitan na ang hudyat mo.
flash token bad: Hindi natagpuan ang ganyang kahalip, suriin kaya ang URL?
heading: Muling itakda ang Hudyat para kay %{user}
- password: "Hudyat:"
+ password: "Password:"
reset: Muling Itakda ang Hudyat
title: Muling itakda ang hudyat
set_home:
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index ef8cc6b1a..afa70d1f4 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -11,6 +11,7 @@
# Author: Katpatuka
# Author: Meelo
# Author: SalihB
+# Author: Sucsuzz
# Author: Szoszv
# Author: Talha Samil Cakir
# Author: Tarikozket
@@ -1159,6 +1160,8 @@ tr:
wood: Orman
markdown_help:
first: İlk öğe
+ heading: Başlık
+ headings: Başlıklar
image: Görsel
link: Bağlantı
ordered: Sıralı liste
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index f9e554f2f..66a86502d 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -195,7 +195,7 @@ uk:
tag: Сторінка вікі, що описує теґ %{key}=%{value}
wikipedia_link: Стаття %{page} у Вікіпедії
timeout:
- sorry: На жаль, дані для %{type} з ідентифікатором %{id}, занадто великі для отримання.
+ sorry: На жаль, %{type} з ідентифікатором %{id}, має занадто багато даних, щоб їх отримати.
type:
changeset: набір змін
node: точка
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 03bf32076..59d43ae49 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -117,9 +117,12 @@ zh-CN:
title_comment: 变更集%{id} - %{comment}
node: 节点(%{count})
node_paginated: 节点(%{x}-%{y},总计%{count})
- osmchangexml: osmChange XML
+ osmchangexml: osm变更XML
+ relation: 关系(%{count})
+ relation_paginated: 关系(%{count}的%{x}-%{y})
title: 变更集:%{id}
way: 路径 (%{count})
+ way_paginated: 路径(%{count}的%{x}-%{y})
closed: 关闭于
closed_by_html: 关闭于%{time}前,由%{user}
closed_html: 关闭于%{time}前
@@ -151,7 +154,7 @@ zh-CN:
closed_title: "已解决的注释 #%{note_name}"
commented_by: "%{user}于%{when}前发表的评论"
commented_by_anonymous: 匿名用户于%{when}前发表的评论
- description: 说明:
+ description: 说明
hidden_by: "%{user}隐藏于%{when}前"
hidden_title: 隐藏注释#%{note_name}
new_note: 新建注释
@@ -201,6 +204,7 @@ zh-CN:
view_details: 查看详情
view_history: 查看历史
way:
+ also_part_of: 路径%{related_ways}的一部分
history_title: 路径历史:%{name}
nodes: 节点
title: 路径:%{name}
@@ -313,11 +317,11 @@ zh-CN:
description: iD(浏览器内编辑器)
name: iD
potlatch:
- description: Potlatch 1(浏览器内编辑器)
- name: Potlatch 1
+ description: 冬季节1(浏览器内编辑器)
+ name: 冬季节1
potlatch2:
- description: Potlatch 2(浏览器内编辑器)
- name: Potlatch 2
+ description: 冬季节2(浏览器内编辑器)
+ name: 冬季节2
remote:
description: 远程控制(JOSM或Merkaartor)
name: 远程控制
@@ -364,11 +368,14 @@ zh-CN:
title: 导出
fixthemap:
how_to_help:
+ add_a_note:
+ instructions_html: 只需点击或地图上显示的相同图标。这将向地图加入书签,您也可以拖动移除它。加入您的信息,之后点击保存,其他映射也将用于研究。
join_the_community:
explanation_html: 如果你发现我们的地图数据有问题,例如缺少某条道路或者你的地址,最好的处理方法就是加入OpenStreetMap社区,然后你自己添加或者改进数据。
title: 加入社区
title: 如何帮助
other_concerns:
+ explanation_html: 如果您有关于如何使用我们的数据或内容的关心请查阅我们在版权页面的更多法律信息,或联系OSMF工作组。
title: 其他问题
title: 报告问题/修复地图
geocoder:
@@ -1003,7 +1010,7 @@ zh-CN:
home: 返回家位置
intro_2_create_account: 创建用户账户
intro_header: 欢迎来到 OpenStreetMap!
- intro_text: OpenStreetMap 是一个世界地图,由像你这样的人们所建立,在开放授权下可以自由使用。
+ intro_text: OpenStreetMap是一个世界地图,由同你一样的人们所构筑,可依据开放许可协议自由使用。
learn_more: 详细了解
log_in: 登录
log_in_tooltip: 使用已有账户登录
@@ -1041,6 +1048,7 @@ zh-CN:
title: 署名示例
contributors_at_html: 奥地利:包含来自 Stadt Wien(CC BY协议)、Land Vorarlberg及 Land Tirol(修订的CC-BY AT协议)的数据。
contributors_ca_html: 加拿大:含有来自GeoBase®,GeoGratis(© 加拿大自然资源部),CanVec(© 加拿大自然资源部)和StatCan(加拿大统计局地理处)的数据。
+ contributors_fi_html: 芬兰:包含来自芬兰国家测绘局地形数据库和其他测绘机构的数据,依据NLSFI协议授权。
contributors_footer_1_html: "关于其进一步的细节,及其他被用来帮助提升 OpenStreetMap 的来源,详见 OpenStreetMap Wiki 的贡献者页面。"
contributors_footer_2_html: OpenStreetMap 纳入数据并不意味着原始数据提供者认可 OpenStreetMap、提供任何担保或担负任何法律责任。
contributors_fr_html: 法国:含有来自Direction Générale des Impôts的数据。
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 7a1365942..3a9d729d8 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -4,6 +4,7 @@
# Author: Anakmalaysia
# Author: Cwlin0416
# Author: Foothsu
+# Author: Hlaw
# Author: Justincheng12345
# Author: Mmyangfl
# Author: Orinx
@@ -14,15 +15,17 @@
# Author: Wrightbus
zh-TW:
about_page:
- community_driven_title: 社群參與
+ community_driven_html: "OpenStreetMap的社群多元化、懷有熱情,而且日益壯大。我們的貢獻者包括地圖製作愛好者,地理信息系統的專業人員,提供OSM伺服器的工程師,為受災害影響區域製圖的人道主義志願人士,以及其他各界人士。\n想進一步了解這個社群,請參閱用戶日記,\n社群博客,以及OSM基金會 網站。"
+ community_driven_title: 社群推動
copyright_html: ©OpenStreetMap
貢獻者
- lede_text: OpenStreetMap 是由製圖者社群所建立的,維護的資料包含世界上的道路、步道、咖啡館、火車站等等。
- local_knowledge_html: "OpenStreetMap 強調當地的知道。貢獻者使用\n航照圖、GPS 裝置與低科技的地區地圖來驗證 OSM\n是正確而即時的。"
+ lede_text: OpenStreetMap是由製圖者社群所建立,他們提供及不斷更新包括有關世界各地的道路、路徑、咖啡館、火車站等等的資料。
+ local_knowledge_html: "OpenStreetMap強調當地的知識。貢獻者使用\n航照圖、GPS裝置與低科技的實地考察製圖,來驗證OSM\n是正確而最新的。"
local_knowledge_title: 當地的知識
next: 下一頁
+ open_data_html: "OpenStreetMap是開放資料: 您可以自由地使用作任何用途,前提是您須標明作者為OpenStreetMap及其貢獻者。若您在我們的資料上作修改或以之透過某些方式衍生其他資料\n,則只可依相同授權條款散佈有關成果。詳情請參閱版權及授權頁面。"
open_data_title: 開放資料
partners_title: 合作夥伴
- used_by: "%{name} 提供數以百計的網站、行動 app 與硬體設備地圖資料"
+ used_by: "%{name}為數以百計的網站、行動 app 與硬體設備,提供地圖資料"
activerecord:
attributes:
diary_comment:
@@ -95,10 +98,10 @@ zh-TW:
require_cookies:
cookies_needed: 您似乎已停用 cookies - 請在瀏覽器中啟用 cookies,然後繼續。
require_moderator:
- not_a_moderator: 您需要一個管理者來執行該動作。
+ not_a_moderator: 您需要是管理人員,才可執行該動作。
setup_user_auth:
- blocked: 您對 API 的存取已經被阻擋了。請登入網頁介面以了解更多資訊。
- need_to_see_terms: 我們已暫時中止您存取API的權限,請登入網頁介面查閱貢獻者條款,您不需要同意有關條款,但必須查閱全部。
+ blocked: 您已經被封禁使用API。請登入網頁介面以了解更多資訊。
+ need_to_see_terms: 我們已暫時中止您使用API的權限,請登入網頁介面查閱貢獻者條款,您不需要同意有關條款,但必須查閱它們。
browse:
anonymous: 匿名
changeset:
@@ -107,26 +110,26 @@ zh-TW:
feed:
title: 變更組合 %{id}
title_comment: 變更組合 %{id} - %{comment}
- node: 節點 (%{count})
- node_paginated: 節點(%{count}的%{x}-%{y})
- osmchangexml: osmChange XML
+ node: 節點 (共%{count}項)
+ node_paginated: 節點 (共%{count}項中的第%{x}-%{y}項)
+ osmchangexml: osmChange格式 XML
relation: 關係(%{count})
relation_paginated: 關係(%{count}的%{x}-%{y})
title: 變更組合:%{id}
- way: 路線(%{count})
+ way: 路徑 (共%{count}項)
way_paginated: 路線(%{count}的%{x}-%{y})
- closed: 已關閉
- closed_by_html: 由 %{user} 關閉於 %{time} 以前
- closed_html: 關閉於 %{time} 以前
+ closed: 已關閉於
+ closed_by_html: 於%{time}前由%{user}關閉
+ closed_html: 於%{time}前關閉
containing_relation:
entry: 關係 %{relation_name}
- entry_role: 關係 %{relation_name} (做為 %{relation_role})
- created: 已建立
- created_by_html: 由 %{user} 建立於 %{time} 以前
- created_html: 建立於 %{time} 以前
- deleted_by_html: 由 %{user} 刪除於 %{time} 以前
+ entry_role: 關係 %{relation_name} (作為 %{relation_role})
+ created: 已建立於
+ created_by_html: 於%{time}前由%{user}建立
+ created_html: 於%{time}前建立
+ deleted_by_html: 於%{time}前由%{user}刪除
download_xml: 下載 XML
- edited_by_html: 由 %{user} 編輯於 %{time} 以前
+ edited_by_html: 於%{time}前由%{user}編輯
in_changeset: 變更組合
location: 位置:
no_comment: (沒有評論)
@@ -134,45 +137,58 @@ zh-TW:
history_title: 節點歷史:%{name}
title: 節點:%{name}
not_found:
- sorry: 抱歉,找不到 id %{id} 的 %{type}。
+ sorry: 抱歉,找不到%{type}#%{id}。
type:
changeset: 變更組合
node: 節點
relation: 關係
way: 路徑
note:
- closed_title: 已解決的筆記:%{note_name}
+ closed_by: 於%{when}前由%{user}解決
+ closed_by_anonymous: 於%{when}前由匿名用户解決
+ closed_title: 已解決的筆記:#%{note_name}
+ commented_by: "%{user}於%{when}前發表的評論"
+ commented_by_anonymous: 匿名用户於%{when}前發表的評論
description: "描述:"
+ hidden_by: 於%{when}前由%{user}隱藏
+ hidden_title: 已隱藏的筆記:#%{note_name}
new_note: 新增節點
- open_title: "未解決的筆記: %{note_name}"
+ open_by: 於%{when}前由%{user}建立
+ open_by_anonymous: 於%{when}前由匿名用户建立
+ open_title: "未解決的筆記: #%{note_name}"
+ reopened_by: 於%{when}前由%{user}重開
+ reopened_by_anonymous: 於%{when}前由匿名用户重開
title: 節點:%{id}
- part_of: 部分:
+ part_of: 屬於:
redacted:
- message_html: 此 %{type} 中的版本 %{version} 不能被顯示,因爲它已被編輯過。請參閱 %{redaction_link} 的詳細資訊。
- redaction: 修訂版 %{id}
+ message_html: 此%{type}的版本%{version}已被刪蓋,因此未能顯示。詳細資訊請參閱%{redaction_link}。
+ redaction: 刪蓋程序%{id}
type:
node: 節點
relation: 關係
way: 路徑
relation:
+ history_title: "關係修訂歷史: %{name}"
members: 成員
+ title: "關係: %{name}"
relation_member:
- entry_role: "%{type} %{name} 做為 %{role}"
+ entry_role: "%{type} %{name} 作為 %{role}"
type:
node: 節點
relation: 關係
way: 路徑
start_rjs:
+ feature_warning: 載入%{num_features}項物件的資料,可能會使你的瀏覽器操作緩慢或反應遲緩。你確定要顯示這些資料嗎?
load_data: 載入資料
loading: 正在載入...
tag_details:
tags: 標籤
wiki_link:
- key: "%{key} 標籤的 wiki 描述頁面"
- tag: "%{key}=%{value} 標籤的 wiki 描述頁面"
- wikipedia_link: 維基百科上的 %{page} 文章
+ key: "%{key}標籤的wiki說明頁面"
+ tag: "%{key}=%{value}標籤的wiki說明頁面"
+ wikipedia_link: 維基百科上的%{page}條目
timeout:
- sorry: 抱歉,取得 id %{id} 的 %{type} 資料花了太長的時間。
+ sorry: 抱歉,索取id為%{id}的%{type}資料,花費時間過長。
type:
changeset: 變更組合
node: 節點
@@ -182,6 +198,9 @@ zh-TW:
view_details: 檢視詳細資訊
view_history: 檢視歷史
way:
+ also_part_of:
+ one: 路徑%{related_ways}的部份
+ other: 路徑%{related_ways}的部份
nodes: 節點
changeset:
changeset:
@@ -191,50 +210,50 @@ zh-TW:
changeset_paging_nav:
next: 下一頁 »
previous: « 上一頁
- showing_page: 第 %{page}頁
+ showing_page: 第%{page}頁
changesets:
area: 區域
comment: 註解
id: ID
saved_at: 儲存於
- user: 使用者
+ user: 用户
list:
- empty: 發現沒有變更集。
- empty_area: 這一地區沒有變更集。
- empty_user: 此用戶沒有變更集。
+ empty: 發現沒有變更組合。
+ empty_area: 這一地區沒有變更組合。
+ empty_user: 此用戶沒有變更組合。
load_more: 載入更多
- no_more: 沒有更多變更集。
- no_more_area: 這一地區沒有更多變更集。
- no_more_user: 此用戶沒有更多變更集。
+ no_more: 沒有更多變更組合。
+ no_more_area: 這一地區沒有更多變更組合。
+ no_more_user: 此用戶沒有更多變更組合。
title: 變更組合
title_friend: 您朋友的變更組合
title_nearby: 鄰近使用者的變更組合
- title_user: "%{user} 的變更組合"
+ title_user: "%{user}的變更組合"
timeout:
- sorry: 對不起,您要求的變更組合集清單取回時花了太長時間。
+ sorry: 對不起,索取您所要求的變更組合清單,花費時間過長。
diary_entry:
comments:
- ago: "%{ago} 前"
+ ago: "%{ago}前"
comment: 評論
- has_commented_on: "%{display_name} 在以下的日記項目發表了評論"
+ has_commented_on: "%{display_name}在以下的日記項目發表了評論"
newer_comments: 較新的評論
older_comments: 較舊的評論
post: 張貼
when: 於
diary_comment:
- comment_from: 由 %{link_user} 於 %{comment_created_at} 發表評論
+ comment_from: 由%{link_user}於%{comment_created_at}發表的評論
confirm: 確認
hide_link: 隱藏此評論
diary_entry:
comment_count:
- one: 1個評論
- other: "%{count}個評論"
- zero: 無評論
+ one: 1項評論
+ other: "%{count}項評論"
+ zero: 沒有評論
comment_link: 對這個項目的評論
confirm: 確認
edit_link: 編輯此項目
hide_link: 隱藏此項目
- posted_by: 由 %{link_user} 於 %{created} 以 %{language_link} 張貼
+ posted_by: 於%{created}由%{link_user}以%{language_link}張貼
reply_link: 回覆這個項目
edit:
body: 內文:
@@ -249,14 +268,14 @@ zh-TW:
use_map_link: 使用地圖
feed:
all:
- description: 使用者最近的 OpenStreetMap 日記
- title: OpenStreetMap 日記
+ description: OpenStreetMap使用者最近的日記項目
+ title: OpenStreetMap日記項目
language:
- description: 使用者最近的 OpenStreetMap 日記(語言為 %{language_name})
- title: OpenStreetMap 日記 (語言為 %{language_name})
+ description: OpenStreetMap使用者最近的日記項目 (語言為 %{language_name})
+ title: OpenStreetMap日記項目 (語言為 %{language_name})
user:
- description: "%{user} 最近的 OpenStreetMap 日記"
- title: "%{user} 的 OpenStreetMap 日記"
+ description: "%{user}最近的OpenStreetMap日記項目"
+ title: "%{user}的OpenStreetMap日記項目"
list:
in_language_title: 日記 (語言為 %{language})
new: 新增日記項目
@@ -268,7 +287,7 @@ zh-TW:
title: 日記
title_friends: 朋友的日記
title_nearby: 附近的使用者的日記
- user_title: "%{user} 的日記"
+ user_title: "%{user}的日記"
location:
edit: 編輯
location: 位置:
@@ -276,20 +295,20 @@ zh-TW:
new:
title: 新日記項目
no_such_entry:
- body: 抱歉,沒有日記項目或評論的 id 是 %{id}。請檢查您的拼字,或者可能是按到錯誤的連結。
- heading: 沒有項目的 id 為: %{id}
+ body: 抱歉,沒有日記項目或評論的id是%{id}。請檢查您的拼字,或者可能是您按到錯誤的連結。
+ heading: 沒有項目的id為:%{id}
title: 沒有這個日記項目
view:
leave_a_comment: 留下評論
login: 登入
- login_to_leave_a_comment: "%{login_link} 以留下評論"
+ login_to_leave_a_comment: "%{login_link}以留下評論"
save_button: 儲存
- title: "%{user} 的日記 | %{title}"
+ title: "%{user}的日記 | %{title}"
user_title: "%{user}的日記"
editor:
- default: 預設 (目前 %{name})
+ default: 預設 (目前為 %{name})
id:
- description: iD (網頁版編輯器)
+ description: iD (瀏覽器內編輯)
name: iD
potlatch:
description: Potlatch 1 (瀏覽器內編輯)
@@ -304,9 +323,9 @@ zh-TW:
start:
add_marker: 在地圖加上標記
area_to_export: 要匯出的區域
- embeddable_html: 內嵌式 HTML
+ embeddable_html: 內嵌式HTML
export_button: 匯出
- export_details: OpenStreetMap 資料是以開放資料共用 開放資料庫(ODbL)授權。
+ export_details: OpenStreetMap 資料是以Open Data Commons 開放資料庫授權條款(ODbL)授權。
format: 格式
format_to_export: 要匯出的格式
image_size: 圖片大小
@@ -319,28 +338,44 @@ zh-TW:
options: 選項
osm_xml_data: OpenStreetMap XML 資料
output: 輸出
- paste_html: 貼上 HTML 內嵌於網站
+ paste_html: 貼上 HTML 以於網站內嵌
scale: 比例
too_large:
- body: 這個區域太大,無法匯出 OpenStreetMap XML 資料。請拉近選擇一個較小的區域或使用下列大量資料下載源:
+ advice: 如果上述工具匯出失敗,請考慮使用下列的來源:
+ body: 這個區域太大,無法匯出 OpenStreetMap XML 資料。請放大或選擇一個較小的區域,或使用下列大量資料下載源:
geofabrik:
- description: 定期更新的洲、國家及特定城市之摘要
+ description: 定期更新的洲、國家及特定城市之摘錄資料
title: Geofabrik下載
metro:
- description: 世界主要城市與附近地區的摘要
- title: 城市摘要
+ description: 世界主要城市與附近地區的摘錄資料
+ title: 都會區的摘錄資料
other:
description: OpenStreetMap wiki 上列出的其他來源
title: 其他來源
+ overpass:
+ description: 從OpenStreetMap資料庫的鏡像,下載此區域
+ title: Overpass API
planet:
description: 定期更新的完整OpenStreetMap資料庫副本
title: 地球OSM
zoom: 變焦
title: 匯出
+ fixthemap:
+ how_to_help:
+ add_a_note:
+ instructions_html: "只須點擊 或地圖上的同一圖示,\n這將在地圖上添加一個標記,你可以拖動它,並添加你的筆記,然後點擊保存,其他製圖者會作出查證。"
+ join_the_community:
+ explanation_html: 如果你發現我們的地圖資料有問題,例如缺少某條道路或者你的地址,最好的方法就是加入OpenStreetMap社群,然後自己添加或者改進資料。
+ title: 加入社群
+ title: 如何協助
+ other_concerns:
+ explanation_html: 如果您對我們的資料如何被應用或有關的內容有任何問題,請參閱我們的版權頁了解更多法律訊息,或聯繫適當的OSMF working group。
+ title: 其他問題
+ title: 回報問題/改進地圖
geocoder:
description:
title:
- geonames: 位置來自 GeoNames
+ geonames: 位置來自 GeoNames的位置
osm_nominatim: 來自 OpenStreetMap Nominatim 的位置
types:
cities: 城市
@@ -356,9 +391,9 @@ zh-TW:
south_west: 西南方
west: 西方
distance:
- one: 大約 1 公里
- other: 大約 %{count} 公里
- zero: 1 公里以內
+ one: 大約1公里
+ other: 大約%{count}公里
+ zero: 1公里以內
results:
more_results: 更多結果
no_results: 找不到任何結果
@@ -368,7 +403,7 @@ zh-TW:
geonames: 來自GeoNames的結果
geonames_reverse: 來自GeoNames的結果
latlon: 來自內部的結果
- osm_nominatim: 來自 OpenStreetMap Nominatim 的結果
+ osm_nominatim: 來自OpenStreetMap Nominatim的結果
osm_nominatim_reverse: 來自OpenStreetMap Nominatim的結果
uk_postcode: 來自NPEMap / FreeThe Postcode的結果
us_postcode: 來自Geocoder.us的結果
@@ -376,7 +411,7 @@ zh-TW:
admin_levels:
level10: 郊區邊界
level2: 國界
- level4: 州界
+ level4: 省界
level5: 區界
level6: 縣界
level8: 市界
@@ -400,7 +435,7 @@ zh-TW:
arts_centre: 藝術中心
artwork: 藝術品
atm: ATM
- auditorium: 禮堂
+ auditorium: 演講廳
bank: 銀行
bar: 酒吧
bbq: 燒烤場
@@ -410,7 +445,7 @@ zh-TW:
biergarten: 啤酒花園
brothel: 妓院
bureau_de_change: 找換店
- bus_station: 巴士站
+ bus_station: 巴士總站
cafe: 咖啡廳
car_rental: 租車
car_sharing: 汽車共用
@@ -421,8 +456,8 @@ zh-TW:
clinic: 診所
club: 俱樂部
college: 學院
- community_centre: 社群中心
- courthouse: 法庭
+ community_centre: 社區中心
+ courthouse: 法院
crematorium: 火葬場
dentist: 牙醫
doctors: 醫生
@@ -440,7 +475,7 @@ zh-TW:
fuel: 油店
grave_yard: 墓地
gym: 健身中心 / 健身房
- hall: 大廳
+ hall: 禮堂
health_centre: 健康中心
hospital: 醫院
hotel: 酒店
@@ -478,8 +513,8 @@ zh-TW:
shopping: 購物
shower: 淋浴
social_centre: 社交中心
- social_club: 社交場合
- social_facility: 社區設施
+ social_club: 社交會所
+ social_facility: 社會福利設施
studio: 錄音室
supermarket: 超級市場
swimming_pool: 游泳池
@@ -516,7 +551,7 @@ zh-TW:
bus_guideway: 軌道巴士線
bus_stop: 巴士站
byway: 小路
- construction: 建造中公路
+ construction: 建造中道路
cycleway: 單車徑
emergency_access_point: 緊急求助點
footway: 行人路
@@ -526,31 +561,31 @@ zh-TW:
minor: 次要道路
motorway: 高速公路
motorway_junction: 高速公路交匯處
- motorway_link: 高速公路
+ motorway_link: 高速公路連接路
path: 小徑
- pedestrian: 人行道
+ pedestrian: 行人專用道路
platform: 車站月台
primary: 主要道路
primary_link: 主要道路
proposed: 擬議道路
raceway: 賽道
- residential: 住宅
+ residential: 住宅道路
rest_area: 休息區
road: 道路
- secondary: 次要道路
- secondary_link: 次級公路
+ secondary: 次級道路
+ secondary_link: 次級道路連接路
service: 服務道路
services: 高速公路休息區
speed_camera: 測速照相機
- steps: 步驟
+ steps: 梯級
stile: 跨越圍欄的台階
street_lamp: 路燈
tertiary: 三級道路
- tertiary_link: 三級道路
+ tertiary_link: 三級道路連接路
track: 軌道
- trail: 徑
- trunk: 主幹線
- trunk_link: 主幹線
+ trail: 小徑
+ trunk: 主要幹道
+ trunk_link: 主要幹道連接路
unclassified: 無分級道路
unsurfaced: 未平整道路
historic:
@@ -561,18 +596,18 @@ zh-TW:
castle: 城堡
church: 教堂
citywalls: 城牆
- fort: 堡
+ fort: 堡疊
house: 房屋
icon: 圖示
manor: 莊園
memorial: 紀念館
- mine: 礦產
+ mine: 礦場
monument: 古蹟
museum: 博物館
ruins: 廢墟
tomb: 墳墓
tower: 塔
- wayside_cross: 路邊十字
+ wayside_cross: 路邊十字架
wayside_shrine: 路邊神龕
wreck: 殘骸
landuse:
@@ -581,8 +616,8 @@ zh-TW:
brownfield: 棕地
cemetery: 墳場
commercial: 商業區
- conservation: 保育
- construction: 建設中
+ conservation: 保育區
+ construction: 建設中區域
farm: 農場
farmland: 農地
farmyard: 農家
@@ -594,7 +629,7 @@ zh-TW:
landfill: 垃圾埋填區
meadow: 草地
military: 軍事區
- mine: 礦產
+ mine: 礦場
nature_reserve: 自然保護區
orchard: 果園
park: 公園
@@ -606,7 +641,7 @@ zh-TW:
reservoir_watershed: 水庫集水區
residential: 住宅區
retail: 零售
- road: 道路區
+ road: 道路用地
village_green: 鄉村草地
vineyard: 葡萄園
wetland: 濕地
@@ -624,19 +659,19 @@ zh-TW:
miniature_golf: 小型高爾夫球場
nature_reserve: 自然保護區
park: 公園
- pitch: 運動場
+ pitch: 運動場地
playground: 遊樂場
recreation_ground: 遊樂場
sauna: 桑拿
slipway: 船臺
- sports_centre: 運動中心
- stadium: 運動場
+ sports_centre: 體育中心
+ stadium: 體育館
swimming_pool: 游泳池
track: 跑道
water_park: 水上公園
military:
airfield: 軍用機場
- barracks: 營房
+ barracks: 軍營
bunker: 掩體
mountain_pass:
"yes": 山口
@@ -649,13 +684,13 @@ zh-TW:
cliff: 峭壁
crater: 火山口
dune: 沙丘
- feature: 特征
- fell: 費爾地貌
+ feature: 特徵
+ fell: 高原荒地
fjord: 峽灣
forest: 森林
geyser: 間歇泉
glacier: 冰川
- heath: 希思地貌
+ heath: 石南樹叢
hill: 小山
island: 島
land: 陸地
@@ -674,8 +709,8 @@ zh-TW:
spring: 泉
stone: 石
strait: 海峡
- tree: 樹
- valley: 谷
+ tree: 樹木
+ valley: 山谷
volcano: 火山
water: 水
wetland: 濕地
@@ -683,7 +718,7 @@ zh-TW:
wood: 樹林
office:
accountant: 會計師事務所
- architect: 建築院
+ architect: 建築師樓
company: 公司
employment_agency: 就業中介
estate_agent: 地產代理
@@ -703,8 +738,8 @@ zh-TW:
hamlet: 村莊
house: 房屋
houses: 房屋
- island: 島
- islet: 嶼
+ island: 島嶼
+ islet: 小島
isolated_dwelling: 獨立住宅
locality: 地區
moor: 荒野
@@ -713,32 +748,32 @@ zh-TW:
postcode: 郵政編號
region: 區域
sea: 海
- state: 狀態
+ state: 省
subdivision: 細分
suburb: 郊區
town: 鄉鎮
unincorporated_area: 非建制地區
village: 村落
railway:
- abandoned: 廢棄鐵路
+ abandoned: 鐵路線跡
construction: 建造中鐵路
disused: 廢棄鐵路
disused_station: 廢棄火車站
- funicular: 纜索鐵道
- halt: 列車站
- historic_station: 歷史火車站
+ funicular: 纜索鐵路
+ halt: 鐵路站
+ historic_station: 歷史鐵路站
junction: 鐵路交匯處
level_crossing: 道口
light_rail: 輕鐵
miniature: 微型鐵路
- monorail: 單軌
+ monorail: 單軌鐵路
narrow_gauge: 窄軌鐵路
platform: 鐵路月臺
preserved: 保留鐵路
proposed: 規劃鐵路
spur: 鐵路支線
- station: 火車站
- stop: 火車停車處
+ station: 鐵路站
+ stop: 鐵路停車處
subway: 地鐵站
subway_entrance: 地鐵出入口
switch: 道岔
@@ -755,7 +790,7 @@ zh-TW:
bicycle: 自行車店
books: 書店
boutique: 精品店
- butcher: 屠夫
+ butcher: 肉食店
car: 車店
car_parts: 汽車零件
car_repair: 汽車維修
@@ -838,7 +873,7 @@ zh-TW:
museum: 博物館
picnic_site: 野餐地
theme_park: 主題公園
- valley: 谷
+ valley: 山谷
viewpoint: 觀景點
zoo: 動物園
tunnel:
@@ -857,47 +892,93 @@ zh-TW:
lock: 鎖
lock_gate: 船閘
mineral_spring: 礦泉
- mooring: 系泊設備
+ mooring: 繫泊設備
rapids: 急流
- river: 河
+ river: 河流
riverbank: 河岸
- stream: 溪
+ stream: 小溪
wadi: 乾河
water_point: 取水處
waterfall: 瀑布
weir: 堰
help_page:
help:
+ description: 在OSM的問答網站提出問題或搜尋答案。
title: help.openstreetmap.org
url: https://help.openstreetmap.org/
+ introduction: OpenStreetMap有一些資源,可用於學習本計劃、提出和回答問題,以及討論和紀錄與製作地圖相關的話題。
+ title: 取得協助
welcome:
description: 這個快速指南涵蓋了 OpenStreetMap 基礎知識。
title: 歡迎來到 OSM
url: /welcome
wiki:
+ description: 瀏覽wiki,取得詳盡的OSM文檔。
title: wiki.openstreetmap.org
url: http://wiki.openstreetmap.org/
javascripts:
close: 關閉
+ edit_help: 將地圖移至你想編輯的位置並放大,然後按這裡。
+ key:
+ tooltip: 圖例
+ tooltip_disabled: 圖例僅適用於標準圖層
map:
base:
cycle_map: Cycle Map
+ hot: Humanitarian
+ mapquest: MapQuest Open
standard: 標準
transport_map: Transport Map
+ copyright: © OpenStreetMap貢獻者
+ donate_link_text: 作出捐贈
+ layers:
+ data: 地圖圖資
+ header: 地圖圖層
+ notes: 地圖筆記
+ overlays: 啟用覆蓋層,以為地圖解決問題
+ title: 圖層
+ locate:
+ popup: 你在該點的{distance}{unit}範圍內
+ title: 顯示我的位置
+ zoom:
+ in: 放大
+ out: 縮小
+ notes:
+ new:
+ add: 提交筆記
+ intro: 發現錯誤或缺少些什麼東西嗎?請告訴其他地圖製作者以便於我們處理。將標記移動到正確的位置並輸入筆記,以解釋問題。(切勿在此輸入個人資料)
+ show:
+ anonymous_warning: 此項筆記包含來自匿名用戶的評論,應作獨立核實。
+ comment: 提交評論
+ comment_and_resolve: 評論並關閉
+ hide: 隱藏
+ reactivate: 重啟
+ resolve: 關閉
share:
cancel: 取消
+ center_marker: 將標記設為地圖中心點
custom_dimensions: 設置自訂的尺寸
+ download: 下載
embed: HTML
format: 格式:
image: 圖片
- link: 連結或 HTML
+ image_size: 標準圖層圖片顯示尺寸為
+ include_marker: 包括標記
+ link: 連結或HTML
long_link: 連結
- scale: 比例
+ paste_html: 貼上HTML以嵌入網站
+ scale: 比例:
short_link: 簡短連結
+ short_url: 簡短URL
title: 分享
+ view_larger_map: 查看更大的地圖
site:
- edit_disabled_tooltip: 拉近以編輯地圖
+ createnote_disabled_tooltip: 放大以在地圖加入筆記
+ createnote_tooltip: 在地圖加入筆記
+ edit_disabled_tooltip: 放大以編輯地圖
edit_tooltip: 編輯地圖
+ map_data_zoom_in_tooltip: 放大以查看地圖圖資
+ map_notes_zoom_in_tooltip: 放大以查看筆記
layouts:
about: 關於
community: 社群
@@ -905,7 +986,7 @@ zh-TW:
community_blogs_title: OpenStreetMap 社群成員的部落格
copyright: 版權
data: 資料
- donate: 以 %{link} 給硬體升級基金來支援 OpenStreetMap。
+ donate: 以%{link}給硬體升級基金來支援 OpenStreetMap。
edit: 編輯
edit_with: 以 %{editor} 編輯
export: 匯出
@@ -919,10 +1000,10 @@ zh-TW:
home: 移至家的位置
intro_2_create_account: 建立使用者帳號
intro_header: 歡迎來到 OpenStreetMap!
- intro_text: OpenStreetMap 是一個世界地圖,由像您這樣的人們所建立,在開放授權下可以自由使用。
+ intro_text: OpenStreetMap 是一幅世界地圖,由像您這樣的人們所建立,在開放授權下可以自由使用。
learn_more: 了解更多
log_in: 登入
- log_in_tooltip: 以設定好的帳號登入
+ log_in_tooltip: 以現有帳號登入
logo:
alt_text: OpenStreetMap 標誌
logout: 登出
@@ -930,10 +1011,10 @@ zh-TW:
text: 進行捐款
title: 以捐贈金錢來支持 OpenStreetMap
more: 更多
- osm_offline: OpenStreetMap 資料庫目前離線中,直到必要的資料庫維護工作完成為止。
- osm_read_only: OpenStreetMap 資料庫目前是唯讀模式,直到必要的資料庫維護工作完成為止。
+ osm_offline: OpenStreetMap 資料庫目前正在離線,直到必要的資料庫維護工作完成為止。
+ osm_read_only: OpenStreetMap 資料庫目前處於唯讀模式,直到必要的資料庫維護工作完成為止。
partners_bytemark: Bytemark 主機代管
- partners_html: 主機由%{ucl}、%{ic}、%{bytemark} 和其他 %{partners} 所支援。
+ partners_html: 主機由%{ucl}、%{ic}、%{bytemark},和其他%{partners}所支援。
partners_ic: 倫敦帝國學院
partners_partners: 合作夥伴
partners_ucl: 倫敦大學學院 VR 中心
@@ -946,20 +1027,42 @@ zh-TW:
license_page:
foreign:
english_link: 英文原文
- text: 這這個翻譯頁面和 %{english_original_link} 在事件上有衝突時,英文(English)網頁會有較高的優先權
+ text: 這個翻譯頁面和%{english_original_link}若有衝突,會以英文頁面為準
title: 關於這個翻譯
legal_babble:
- contributors_footer_1_html: "需要這些進一步資訊,以及其他用來協助改進\n OpenStreetMap 的資源,請查閱 OpenStreetMap Wiki 上的 貢獻者\n頁面。"
+ attribution_example:
+ alt: 如何在網頁上署名OpenStreetMap的例子
+ title: 署名的例子
+ contributors_at_html: 奧地利:包含來自 Stadt Wien(CC BY授權)、Land Vorarlberg及 Land Tirol(修訂的CC-BY AT授權)的資料。
+ contributors_ca_html: "加拿大:包含來自GeoBase®,GeoGratis(© Department of Natural\nResources Canada),CanVec(© Department of Natural\nResources Canada)和 StatCan(Geography Division,\nStatistics Canada)的資料。"
+ contributors_fi_html: "芬蘭: 包含來自\nNational Land Survey of Finland's Topographic Database\n及其他資料集的資料,以\nNLSFI License授權。"
+ contributors_footer_1_html: "若需要進一步詳情,以及其他曾用以協助改進\n OpenStreetMap 的資料來源,請參閱 OpenStreetMap Wiki 上的 貢獻者\n頁面。"
+ contributors_footer_2_html: OpenStreetMap 收錄一項資料,並不意味原本的資料提供者認可OpenStreetMap、提供任何保證或承擔任何法律責任。
+ contributors_fr_html: "法國: 包含來自\nDirection Générale des Impôts的資料。"
+ contributors_gb_html: "英國: 包含來自Ordnance\nSurvey data(© Crown copyright and database right\n2010-12)的資料。"
+ contributors_intro_html: 我們的貢獻者為成千上萬的人。我們也收納了從國家測繪機構及其他來源等取得的開放版權資料,其中包括:
+ contributors_nl_html: "荷蘭: 包含來自© AND data, 2007\n(www.and.com)的資料。"
+ contributors_nz_html: "紐西蘭: 包含來自\nLand Information New Zealand(Crown Copyright reserved)的資料。"
contributors_title_html: 我們的貢獻者
+ contributors_za_html: "南非: 包含來自\nChief Directorate:\nNational Geo-Spatial Information(State copyright reserved)的資料。"
+ credit_1_html: 我們要求您以“© OpenStreetMap貢獻者”標明作者。
+ credit_2_html: 您亦須清晰註明,有關數據可透過開放資料庫授權條款取得。若使用我們的影像塊,則須註明其製圖法是按CC-BY-SA授權。您可以透過連結至此版權頁以作註明。您亦可以指明並直接連結至授權文本(但若您要以數據形式發布OSM,這是必要條件)。在無法作出連結的媒體(如印刷品),我們建議你引導你的讀者至 openstreetmap.org(如註明OpenStreetMap的完整網址)、opendatacommons.org,及(如相關的話)creativecommons.org。
+ credit_3_html: "對於可瀏覽的電子地圖,標明出處的文字應放在地圖的一角。\n例如:"
credit_title_html: 如何標明作者是OpenStreetMap
+ infringement_1_html: OSM的貢獻者會被提醒,絕不要在沒有版權持有人的明確淮許下,添加來自任何有版權的來源的資料(如Google地圖或印刷地圖)。
+ infringement_2_html: 如果你認為有版權的材料被不恰當地添加到 OpenStreetMap 資料庫或此網站,請參見我們的撤除程序,或直接在我們的網上申報頁面提出。
infringement_title_html: 侵犯版權
- intro_1_html: OpenStreetMap為開放資料,以開放資料共用 開放資料庫(ODbL)授權。
+ intro_1_html: OpenStreetMap為開放資料,以Open Data Commons 開放資料庫授權條款(ODbL)授權。
+ intro_2_html: "您可以自由地複製、散布、傳輸及修改我們的資料,前提是您須標明作者為OpenStreetMap及其貢獻者。若您在我們的資料上作修改或據之衍生其他資料\n,則只可依相同授權條款散佈有關成果。授權的法律原文詳述您的權責。"
+ intro_3_html: 我們地圖影像塊的製圖法以及我們的文件,以共享創意-署名-相同方式共享2.0(CC BY-SA)條款授權。
+ more_1_html: "在常見法律問題中,可閱讀更多關於使用我們的數據,以及如何標明我們是作者的資料。"
+ more_2_html: 雖然 OpenStreetMap 是開放資料,但我們無法為第三方開發人員提供免費的地圖 API。詳見我們的API使用政策、地圖影像塊使用政策及Nominatim服務使用政策。
more_title_html: 了解更多
title_html: 版權與授權條款
native:
mapping_link: 開始製圖
- native_link: 正體中文版
- text: 您正在檢閱英文版本的版權頁。你可以返回這個網頁的 %{native_link} 或者您可以停止閱讀版權並%{mapping_link}。
+ native_link: 台灣正體中文版
+ text: 您正在檢閱英文版本的版權頁。你可以返回這個網頁的%{native_link},您亦可以停止閱讀版權並%{mapping_link}。
title: 關於此頁
message:
delete:
@@ -967,10 +1070,17 @@ zh-TW:
inbox:
date: 日期
from: 寄件者
+ messages: 您有%{new_messages}及%{old_messages}。
my_inbox: 我的收件匣
- no_messages_yet: 您還沒有訊息。何不跟 %{people_mapping_nearby_link} 的人們接觸看看?
+ new_messages:
+ one: "%{count}項新訊息"
+ other: "%{count}項新訊息"
+ no_messages_yet: 您還沒有訊息。何不跟一些%{people_mapping_nearby_link}接觸看看?
+ old_messages:
+ one: "%{count}項舊訊息"
+ other: "%{count}項舊訊息"
outbox: 寄件匣
- people_mapping_nearby: 附近製作地圖
+ people_mapping_nearby: 附近製作地圖的用戶
subject: 主旨
title: 收件匣
mark:
@@ -984,10 +1094,10 @@ zh-TW:
new:
back_to_inbox: 回到收件匣
body: 內文
- limit_exceeded: 您剛剛才送出了很多的訊息。在嘗試寄出其他訊息之前請稍待一會兒。
+ limit_exceeded: 您最近寄出了大量的訊息。在嘗試寄出其他訊息之前請稍候。
message_sent: 訊息已寄出
send_button: 寄出
- send_message_to: 寄出新訊息給 %{name}
+ send_message_to: 寄出新訊息給%{name}
subject: 主旨
title: 寄出訊息
no_such_message:
@@ -997,14 +1107,18 @@ zh-TW:
outbox:
date: 日期
inbox: 收件匣
+ messages:
+ one: 您有%{count}項已寄訊息
+ other: 您有%{count}項已寄訊息
my_inbox: 我的%{inbox_link}
- no_sent_messages: 您還沒有寄出訊息。何不跟 %{people_mapping_nearby_link} 的人們接觸看看?
+ no_sent_messages: 您還沒有已寄訊息。何不跟一些%{people_mapping_nearby_link}接觸看看?
outbox: 寄件匣
- people_mapping_nearby: 附近製作地圖
+ people_mapping_nearby: 附近製作地圖的用戶
subject: 主旨
title: 寄件匣
to: 收件者
read:
+ back: 返回
date: 日期
from: 寄件者
reply_button: 回覆
@@ -1012,97 +1126,125 @@ zh-TW:
title: 閱讀訊息
to: 收件者
unread_button: 標記為未讀
- wrong_user: 您已經以「%{user}」的身分登入,但是您想要閱讀的訊息並非寄給那個使用者。請以正確的使用者身分登入以閱讀它。
+ wrong_user: 您已經以「%{user}」的身份登入,但是您想要閱讀的訊息並非寄給那個使用者。請以正確的使用者身份登入以閱讀它。
reply:
- wrong_user: 您已經以「%{user}」的身分登入,但是您想要回覆的訊息並非寄給這個使用者。請以正確的使用者身分登入以回覆這個訊息。
+ wrong_user: 您已經以「%{user}」的身份登入,但是您想要回覆的訊息並非寄給這個使用者。請以正確的使用者身份登入以回覆這個訊息。
sent_message_summary:
delete_button: 刪除
note:
+ description:
+ closed_at_by_html: 於%{when}前由%{user}關閉
+ closed_at_html: 於%{when}前關閉
+ commented_at_by_html: 於%{when}前由%{user}更新
+ commented_at_html: 於%{when}前更新
+ opened_at_by_html: 於%{when}前由%{user}建立
+ opened_at_html: 於%{when}前建立
+ reopened_at_by_html: 於%{when}前由%{user}重啟
+ reopened_at_html: 於%{when}前重啟
+ entry:
+ comment: 評論
+ full: 筆記原文
mine:
- ago_html: "%{when} 前"
+ ago_html: "%{when}前"
created_at: 建立於:
- description: 描述
+ creator: 建立者
+ description: 說明
+ heading: "%{user}的筆記"
last_changed: 最新變更
+ title: 由%{user}提交或評論的筆記
rss:
+ closed: 關閉的筆記(在%{place}附近)
+ commented: 新的評論(在%{place}附近)
+ description_area: 在你的區域[(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]所報告、評論或關閉的筆記的列表
+ description_item: 筆記%{id}的 RSS feed
+ opened: 新的筆記(在%{place}附近)
+ reopened: 重啟的筆記(在%{place}附近)
title: OpenStreetMap 筆記
notifier:
diary_comment_notification:
- footer: 您也可以在 %{readurl} 閱讀評論,並且在 %{commenturl} 留下評論或在 %{replyurl} 回覆
- header: "%{from_user} 在您最近 OpenStreetMap 主旨為 %{subject} 的日記項目留下評論:"
+ footer: 您也可以在 %{readurl} 閱讀評論,並且在 %{commenturl} 留下評論,或在 %{replyurl} 回覆
+ header: "%{from_user}在您最近主旨為%{subject}的 OpenStreetMap 日記項目留下評論:"
hi: "%{to_user}您好,"
- subject: "[OpenStreetMap] %{user} 在您的日記項目留下評論"
+ subject: "[OpenStreetMap] %{user}在您的日記項目留下評論"
email_confirm:
subject: "[OpenStreetMap] 確認您的電子郵件位址"
email_confirm_html:
click_the_link: 如果這是您,請按下列連結確認此變更。
greeting: 您好,
- hopefully_you: 有人 (希望是您) 想要改變他的電子郵件位址 %{server_url} 為 %{new_address}。
+ hopefully_you: 有人 (希望是您) 想將他的電郵地址 %{server_url} 改變為 %{new_address}。
email_confirm_plain:
click_the_link: 如果這是您,請按下列連結確認此變更。
greeting: 您好,
+ hopefully_you: 有人(希望是您)希望在 %{server_url} 更改電郵地址至 %{new_address} 。
friend_notification:
- befriend_them: 您可以在 %{befriendurl} 把他們加為朋友。
- had_added_you: "%{user} 已在 OpenStreetMap 將您加入為朋友。"
+ befriend_them: 您可以在 %{befriendurl} 把他加入為朋友。
+ had_added_you: "%{user}已在 OpenStreetMap 將您加入為朋友。"
see_their_profile: 您可以在 %{userurl} 查看他的資料。
- subject: "[OpenStreetMap] %{user} 將您加入朋友"
+ subject: "[OpenStreetMap] %{user}將您加入為朋友"
gpx_notification:
- and_no_tags: 且沒有標籤。
- and_the_tags: 且標籤為:
+ and_no_tags: 並且沒有標籤。
+ and_the_tags: 並且標籤為:
failure:
- failed_to_import: 匯入失敗。這裡是錯誤訊息:
+ failed_to_import: 看來匯入失敗。錯誤訊息為:
more_info_1: 更多關於 GPX 匯入失敗與如何避免它們的
more_info_2: 資訊可在這裡找到:
subject: "[OpenStreetMap] GPX 匯入失敗"
greeting: 您好,
success:
- loaded_successfully: "成功載入可能 %{possible_points} 點中的\n%{trace_points} 點。"
+ loaded_successfully: "成功載入可能為 %{possible_points} 點中的\n%{trace_points} 點。"
subject: "[OpenStreetMap] GPX 匯入成功"
- with_description: 描述為
+ with_description: 附有說明為
your_gpx_file: 您的 GPX 檔案
lost_password:
subject: "[OpenStreetMap] 密碼重設要求"
lost_password_html:
click_the_link: 如果這是您,請按下列連結重設您的密碼。
greeting: 您好,
- hopefully_you: 有人 (希望是您) 要求重設這個電子郵件位址的 openstreetmap.org 帳號密碼。
+ hopefully_you: 有人 (或許是您) 要求將以此電郵地址註冊的 openstreetmap.org 帳戶,重設密碼。
lost_password_plain:
click_the_link: 如果這是您,請按下列連結重設您的密碼。
greeting: 您好,
+ hopefully_you: 有人 (或許是您) 要求將以此電郵地址註冊的 openstreetmap.org 帳戶,重設密碼。
message_notification:
- header: "%{from_user} 透過 OpenStreetMap 寄給您主旨為 %{subject} 的訊息:"
+ footer_html: 您也可以在 %{readurl} 閱讀訊息,並且在 %{replyurl} 回覆
+ header: "%{from_user}透過 OpenStreetMap 寄給您主旨為%{subject}的訊息:"
hi: "%{to_user}您好,"
note_comment_notification:
anonymous: 匿名使用者
greeting: 您好,
signup_confirm:
+ confirm: 在我們作出任何動作之前,我們需要確認這是您提出的要求。如果確實是這樣,請按以下連結,以確認你的帳戶:
+ created: 有人(希望是您)剛在 %{site_url} 建立了帳戶。
greeting: 您好!
subject: "[OpenStreetMap] 歡迎加入OpenStreetMap"
+ welcome: 在確認你的帳戶後,我們將提供一些額外的訊息,幫助你開始使用OpenStreetMap。
oauth:
oauthorize:
allow_read_gpx: 讀取您的私人 GPS 軌跡。
allow_read_prefs: 讀取您的使用者偏好設定。
allow_to: 允許客戶端應用程式:
allow_write_api: 修改地圖。
- allow_write_diary: 建立日記、註解和設定朋友。
+ allow_write_diary: 建立日記、註解和加入朋友。
allow_write_gpx: 上傳 GPS 軌跡。
- allow_write_notes: 修改節點。
+ allow_write_notes: 修改筆記。
allow_write_prefs: 修改您的使用者偏好設定。
- request_access: 應用程式 %{app_name} 要求存取您的帳號,%{user}。請確定您要讓此應用程式使用下列功能。您可以依自己的意思選擇。
+ request_access: 應用程式 %{app_name} 要求使用您的帳戶,%{user}。請確定您要讓此應用程式使用下列功能。您可以依自己喜好,選擇多少項功能。
+ title: 授權使用您的帳戶
oauthorize_failure:
- denied: 您已拒絕應用程式 %{app_name} 存取您的帳號。
- invalid: 授權記號是不正確。
+ denied: 您已拒絕應用程式 %{app_name} 使用您的帳戶。
+ invalid: 授權記號並不合法。
title: 授權請求失敗
oauthorize_success:
- allowed: 您已授權應用程式 %{app_name} 存取您的帳號。
- title: 授權請求允許
+ allowed: 您已授權應用程式 %{app_name} 使用您的帳戶。
+ title: 允許授權請求
verification: 驗證碼是 %{code}。
revoke:
- flash: 您已經註銷 %{application} 的記號。
+ flash: 您已經註銷 %{application} 的授權記號。
oauth_clients:
create:
flash: 註冊資訊成功
destroy:
- flash: 已破壞此客戶端應用程式註冊
+ flash: 已銷毀此客戶端應用程式註冊
edit:
submit: 編輯
title: 編輯您的應用程式
@@ -1112,8 +1254,9 @@ zh-TW:
allow_write_api: 修改地圖。
allow_write_diary: 建立日記、註解和設定朋友。
allow_write_gpx: 上傳 GPS 軌跡。
+ allow_write_notes: 修改筆記。
allow_write_prefs: 修改他們的使用者偏好設定。
- callback_url: 召回 URL
+ callback_url: 召回(Callback) URL
name: 名稱
requests: 向使用者要求下列權限:
required: 必要的
@@ -1122,7 +1265,7 @@ zh-TW:
index:
application: 應用程式名稱
issued_at: 簽發於
- list_tokens: 下列記號已發給您名下的應用程式:
+ list_tokens: 下列授權記號已發給您名下的應用程式:
my_apps: 我的客戶端應用程式
my_tokens: 我授權的應用程式
no_apps: 您是否有想要註冊以使用於 %{oauth} 標準的應用程式?您必須先註冊您的網頁應用程式,才能對這個服務進行 OAuth 要求。
@@ -1142,6 +1285,7 @@ zh-TW:
allow_write_api: 修改地圖。
allow_write_diary: 建立日記、註解和設定朋友。
allow_write_gpx: 上傳 GPS 軌跡。
+ allow_write_notes: 修改筆記。
allow_write_prefs: 修改他們的使用者偏好設定。
authorize_url: 授權 URL:
confirm: 您確定嗎?
@@ -1155,14 +1299,16 @@ zh-TW:
url: 要求記號 URL:
update:
flash: 更新客戶端資訊成功
+ printable_name:
+ with_version: "%{id},版本%{version}"
redaction:
edit:
- description: 描述
+ description: 說明
new:
- description: 描述
+ description: 說明
show:
confirm: 您確定嗎?
- description: 描述:
+ description: 說明:
user: 建立者:
update:
flash: 已儲存更改。
@@ -1172,16 +1318,18 @@ zh-TW:
flash_player_required: 您需要 Flash player 才能使用 Potlatch,OpenStreetMap Flash 編輯器。您可以在 Adobe.com 下載 Flash Player。還有其他許多選擇也可以編輯 OpenStreetMap。
id_not_configured: iD 尚未設定
no_iframe_support: 您的瀏覽器不支持 HTML 嵌入式框架,這是這項功能所必要的。
- not_public: 您尚未將您的編輯開放至公領域。
- not_public_description: 在您這麼做之前將無法再編輯地圖。您可以在您的%{user_page}將自己的編輯設定為公領域。
+ not_public: 您尚未將您的編輯設為公開。
+ not_public_description: 在您這麼做之前將無法再編輯地圖。您可以在您的%{user_page}將自己的編輯設定為公開。
potlatch2_unsaved_changes: 您有未儲存的更改。(要在 Potlatch 2 中儲存,您應按一下儲存。)
potlatch_unsaved_changes: 您還有未儲存的變更。 (要在 Potlatch 中儲存,您應該取消選擇目前的路徑或節點(如果是在清單模式編輯),或是點選儲存(如果有儲存按鈕)。)
user_page_link: 使用者頁面
index:
- createnote: 添加注釋
+ createnote: 添加筆記
js_1: 您使用不支援 JavaScript 的瀏覽器,或者停用了 JavaScript。
js_2: OpenStreetMap 使用 JavaScript 讓地圖更平順。
- permalink: 永久鏈接
+ license:
+ copyright: 版權所有,由OpenStreetMap及貢獻者根據開放的授權協議提供
+ permalink: 永久連結
remote_failed: 編輯失敗 - 請確定已載入 JOSM 或 Merkaartor 並啟用遠端控制選項
shortlink: 簡短連結
key:
@@ -1189,22 +1337,25 @@ zh-TW:
entry:
admin: 行政區邊界
apron:
- - Airport apron
- - terminal
+ - 機場停機坪
+ - 機場客運大樓
+ bridge: 黑線描邊 = 橋樑
bridleway: 馬道
- building: 特殊建築
+ brownfield: 棕地
+ building: 重要建築
byway: 鄉間小路
cable:
- 纜車
- - chair lift
+ - 吊椅
cemetery: 墳場
- centre: 運動中心
+ centre: 體育中心
commercial: 商業區
common:
- 公地
- 草地
construction: 建築中路段
cycleway: 自行車道
+ destination: 只限前往目的地
farm: 農田
footway: 步道
forest: 森林
@@ -1216,10 +1367,12 @@ zh-TW:
military: 軍事區
motorway: 高速公路
park: 公園
+ permissive: 獲准許者可使用
+ pitch: 運動場地
primary: 主要道路
private: 私有
rail: 鐵路
- reserve: 自然保留區
+ reserve: 自然保護區
resident: 住宅區
retail: 零售區
runway:
@@ -1229,19 +1382,20 @@ zh-TW:
- 學校
- 大學
secondary: 次要道路
- station: 火車站
- subway: 地下鐵
+ station: 鐵路站
+ subway: 地下鐵路
summit:
- 提交
- - peak
+ - 山頂
tourist: 旅遊景站
- track: 產業道路
+ track: 行車小徑
tram:
- - 輕軌電車
- - tram
- trunk: 快速道路
- unclassified: 未分類道路
- unsurfaced: 無鋪面道路
+ - 輕便鐵路
+ - 電車
+ trunk: 主要幹路
+ tunnel: 虛線描邊 = 隧道
+ unclassified: 未分級道路
+ unsurfaced: 未鋪裝道路
wood: 樹木
markdown_help:
alt: 替代文字
@@ -1270,15 +1424,19 @@ zh-TW:
search_results: 搜尋結果
time:
formats:
- friendly: "%Y %B %e 於 %H:%M"
+ blog: "%Y年 %B %e日"
+ friendly: "%Y年 %B %e日 %H 時 %M 分"
trace:
create:
trace_uploaded: 您的 GPX 檔案已經上傳並且在等候進入資料庫中。這通常不會超過半小時,完成時會以電子郵件通知您。
upload_trace: 上傳 GPS 軌跡
delete:
- scheduled_for_deletion: 軌跡已預定刪除
+ scheduled_for_deletion: 軌跡已被排程刪除
description:
- description_without_count: "%{user} 的 GPX 檔案"
+ description_with_count:
+ one: 由%{user}上載的 GPX 檔案,含有%{count}點
+ other: 由%{user}上載的 GPX 檔案,含有%{count}點
+ description_without_count: 由%{user}上載的 GPX 檔案
edit:
description: 描述:
download: 下載
@@ -1299,11 +1457,11 @@ zh-TW:
georss:
title: OpenStreetMap GPS 軌跡
list:
- description: 流覽最近的 GPS 軌跡上傳
+ description: 瀏覽最近的 GPS 軌跡上傳
empty_html: 還沒有軌跡。上傳新的軌跡或在 wiki 頁面上瞭解更多有關 GPS 軌跡的資訊。
public_traces: 公開 GPS 軌跡
public_traces_from: "%{user} 的公開 GPS 軌跡"
- tagged_with: " 標籤為 %{tags}"
+ tagged_with: 有如下標籤:%{tags}
your_traces: 您的 GPS 軌跡
make_public:
made_public: 軌跡標記為公開
@@ -1313,7 +1471,7 @@ zh-TW:
offline_warning:
message: GPX 檔案上傳系統目前無法使用
trace:
- ago: "%{time_in_words_ago} 之前"
+ ago: "%{time_in_words_ago}之前"
by: 由
count_points: "%{count} 個點"
edit: 編輯
@@ -1329,7 +1487,7 @@ zh-TW:
trackable: 可追蹤
view_map: 檢視地圖
trace_form:
- description: 描述:
+ description: 說明:
help: 求助
tags: 標籤:
tags_help: 以逗點分隔
@@ -1340,7 +1498,7 @@ zh-TW:
trace_header:
see_all_traces: 查看所有的軌跡
see_your_traces: 查看您所有的軌跡
- traces_waiting: 您有 %{count} 個軌跡等待上傳。請先等待這些結束後才做進一步的上傳,如此才不會阻擋其他使用者的排程。
+ traces_waiting: 您有 %{count} 個軌跡等待上傳。請先等待這些結束後才作進一步的上傳,以免阻礙其他使用者的排程。
upload_trace: 上傳軌跡
trace_optionals:
tags: 標籤
@@ -1376,15 +1534,18 @@ zh-TW:
account:
contributor terms:
agreed: 您已同意新的貢獻者條款。
+ agreed_with_pd: 您亦同意將您的編輯放到公共領域
heading: 貢獻者條款:
link text: 這是什麼?
not yet agreed: 您未同意新的貢獻者條款。
- current email address: 目前的電子郵件位址:
+ review link text: 請跟隨此連結,方便你查看並接受新的貢獻者條款。
+ current email address: 目前的電子郵件地址:
delete image: 移除目前的圖片
email never displayed publicly: (永遠不公開顯示)
- flash update success: 使用者資訊成功的更新。
- flash update success confirm needed: 使用者資訊成功的更新。請檢查您的電子郵件是否收到確認新電子郵件位址的通知。
+ flash update success: 使用者資訊已成功更新。
+ flash update success confirm needed: 使用者資訊成功的更新。請檢查您的電子郵件,以確認收到新電子郵件地址的通知。
gravatar:
+ gravatar: 使用Gravatar
link text: 這是什麼?
home location: 家的位置:
image: 圖片:
@@ -1394,7 +1555,7 @@ zh-TW:
longitude: 經度:
make edits public button: 將我所有的編輯設為公開
my settings: 我的設定值
- new email address: 新的電子郵件位址:
+ new email address: 新的電子郵件地址:
new image: 加入圖片
no home location: 您尚未輸入家的位置。
openid:
@@ -1413,51 +1574,56 @@ zh-TW:
heading: 公開編輯:
public editing note:
heading: 公開編輯
- text: 目前您的編輯是匿名的,人們不能發送郵件給您或看到您的位置。為了顯示你的編輯,讓別人透過網站與您聯繫,請點擊下面的按鈕。 由於 0.6 API 的轉換,只有公開的使用者可以編輯地圖資料 。 ( 知道為什麼 )。 - 您的電子郵件位址將不會被因為成為公開使用者而被透露。
- 這個動作不能逆轉,所有新的使用者現在都預設為公開的。
+ text: 目前您的編輯是匿名的,人們不能發送郵件給您或看到您的位置。為了顯示你的編輯,讓別人透過網站與您聯繫,請點擊下面的按鈕。 由於 0.6 API 的轉換,只有公開的使用者可以編輯地圖資料 。 ( 知道為什麼 )。 - 您的電子郵件地址將不會被因為成為公開使用者而被透露。
- 這個動作不能逆轉,所有新的使用者現在都預設為公開的。
replace image: 取代目前的圖片
return to profile: 回到設定檔
save changes button: 儲存變更
- title: 編輯帳號
+ title: 編輯帳戶
update home location on click: 當我點選地圖時更新家的位置?
confirm:
+ already active: 該帳戶已經確認。
button: 確認
- heading: 請檢查您的電子郵件
- introduction_1: 我們寄給您一封確認電子郵件。
- press confirm button: 按下確認按鈕以啟用您的帳號。
+ heading: 請檢查您的電子郵件!
+ introduction_1: 我們寄給您一封確認電郵。
+ introduction_2: 按電子郵件中的連結以確認你的帳戶,然後你就可以開始繪製地圖。
+ press confirm button: 按下確認按鈕以啟用您的帳戶。
+ reconfirm_html: 如果你需要我們重新發送確認電郵,請按這裡。
+ unknown token: 確認碼已經過期或不存在。
confirm_email:
button: 確認
- failure: 具有此記號的電子郵件位址已經確認過了。
+ failure: 具有此記號的電子郵件地址已經確認過了。
heading: 確認電子郵件位址的變更
- press confirm button: 按下確認按鈕以確認您的新電子郵件位址。
- success: 已確認您的電子郵件位址,感謝您的註冊!
+ press confirm button: 按下確認按鈕以確認您的新電子郵件地址。
+ success: 已確認您的電子郵件地址,感謝您的註冊!
confirm_resend:
failure: 找不到使用者 %{name}。
+ success: 我們已經發送一封新的確認電郵到%{email},只要你確認你的帳戶,你就可以開始製圖了。
如果你使用會發送確認請求的反垃圾郵件系統,請確保你將webmaster@openstreetmap.org加入白名單中,因為我們無法回覆任何確認請求。
filter:
- not_an_administrator: 您需要一個管理者來執行該動作。
+ not_an_administrator: 您需要一個行政員才可執行該動作。
go_public:
- flash success: 現在您所有的編輯都是公開的,因此您已有編輯的權利。
+ flash success: 現在您所有的編輯都是公開的,而您已獲准編輯。
list:
confirm: 確認選取的使用者
empty: 找不到符合的使用者
heading: 使用者
hide: 隱藏選取的使用者
showing:
- one: 顯示頁面 %{page} (%{first_item} / %{items})
- other: 顯示頁面 %{page} (%{first_item}-%{last_item} / %{items})
- summary: "%{name} 由 %{ip_address} 於 %{date} 建立"
- summary_no_ip: "%{name} 建立於: %{date}"
+ one: 頁面 %{page} (%{first_item} / %{items})
+ other: 頁面 %{page} (%{first_item}-%{last_item} / %{items})
+ summary: "%{name}由%{ip_address}於%{date}建立"
+ summary_no_ip: "%{name}建立於:%{date}"
title: 使用者
login:
account is suspended: 很抱歉,您的帳戶已經因可疑活動被暫停。
請如果您想要討論這個問題,請與網站管理員聯繫。
- account not active: 抱歉,您的帳號尚未啟用。
請點選帳號確認電子郵件中的連結來啟用您的帳號,或是要求寄一封新的確認信。
- auth failure: 抱歉,無法以這些資料登入。
- create account minute: 建立一個帳號。只需要一分鐘。
+ account not active: 抱歉,您的帳戶尚未啟用。
請點選帳戶確認電子郵件中的連結來啟用您的帳戶,或要求發出新的確認電郵。
+ auth failure: 很抱歉,無法以這些資料登入。
+ create account minute: 建立一個帳戶。只需要一分鐘。
email or username: 電子郵件位址或使用者名稱:
heading: 登入
login_button: 登入
lost password link: 忘記您的密碼?
new to osm: 第一次來到 OpenStreetMap?
- no account: 還沒有帳號嗎?
+ no account: 還沒有帳戶嗎?
openid: "%{logo} OpenID:"
openid invalid: 很抱歉,您的 OpenID 格式似乎不正確
openid missing provider: 很抱歉,無法聯繫您的 OpenID 提供者
@@ -1485,46 +1651,51 @@ zh-TW:
register now: 立即註冊
remember: 記住我:
title: 登入
- to make changes: 要更改的 OpenStreetMap 的資料,您必須擁有一個帳號。
+ to make changes: 要更改的 OpenStreetMap 的資料,您必須擁有一個帳戶。
with openid: 或者請使用 OpenID 登錄:
- with username: 已經有 OpenStreetMap 的帳號嗎?請使用您的使用者名和密碼登錄:
+ with username: 已經有 OpenStreetMap 的帳戶嗎?請使用您的使用者名和密碼登錄:
logout:
heading: 從 OpenStreetMap 登出
logout_button: 登出
title: 登出
lost_password:
- email address: 電子郵件位址:
+ email address: 電子郵件地址:
heading: 忘記密碼?
- help_text: 輸入您的電子郵件位址來註冊,我們會寄出連結給它,而您可以用它來重設密碼。
- new password button: 傳送給我新的密碼
- notice email cannot find: 找不到該電子郵件位址,抱歉。
- notice email on way: 很遺憾您忘了它 :-( 但是一封讓您可以重設它的郵件已經寄出。
+ help_text: 輸入您的電子郵件地址來註冊,我們會將連結送至該地址,而您可以用它來重設密碼。
+ new password button: 重設密碼
+ notice email cannot find: 找不到該電子郵件地址,抱歉。
+ notice email on way: 很遺憾您忘了它 :-( 不過讓您可以重設它的電子郵件已經寄出,您待會便可重設。
title: 遺失密碼
make_friend:
- already_a_friend: 您已經是 %{name} 的朋友了。
- button: 加入朋友
- failed: 抱歉,無法將 %{name} 加入為朋友。
- heading: 將 %{user} 加為朋友?
- success: "%{name} 現在成為您的朋友!"
+ already_a_friend: 您已經是%{name}的朋友了。
+ button: 加入為朋友
+ failed: 抱歉,無法將%{name}加入為朋友。
+ heading: 將%{user}加入為朋友?
+ success: "%{name}現在已成為您的朋友!"
new:
- confirm email address: 確認電子郵件位址:
+ about:
+ header: 自由及可編輯
+ html: "與其他地圖不同,OpenStreetMap是完全由像你一樣的人們創建的,而且任何人都可自由地修正、更新、下載和使用。
\n請註冊以開始貢獻吧。我們將發出電郵以確認你的帳戶。
"
+ confirm email address: 確認電子郵件地址:
confirm password: 確認密碼:
- contact_webmaster: 請連絡 網站管理者安排要建立的帳號,我們會儘快嘗試並處理這個要求。
+ contact_webmaster: 請聯絡 網站管理者安排要建立的帳戶,我們會儘快嘗試並處理這個要求。
continue: 註冊
display name: 顯示名稱:
display name description: 您公開顯示的使用者名稱。您可以稍後在偏好設定中改變它。
- email address: 電子郵件位址:
- license_agreement: 當您確認您的帳號,您需要同意貢獻者條款 。
- no_auto_account_create: 很不幸的我們現在無法自動為您建立帳號。
+ email address: 電子郵件地址:
+ license_agreement: 當您確認您的帳戶,您需要同意貢獻者條款 。
+ no_auto_account_create: 很不幸的我們現在無法自動為您建立帳戶。
not displayed publicly: 不要公開顯示 (請看 隱私權政策)
openid: "%{logo} OpenID:"
+ openid association: "你的 OpenID 尚未與一個 OpenStreetMap 帳戶相關聯。
\n\n - 如果你是新來到OpenStreetMap,請使用下面的表單建立一個新的帳戶。
\n - \n 如果你已經有一個帳戶,你可以使用你的用戶名稱和密碼登入你的帳戶,然後在你的用戶設置中關聯你的OpenID。 \n
\n
"
openid no password: 使用 OpenID 時密碼不是必需的,但可能仍需要一些額外的工具或伺服器。
password: 密碼:
terms accepted: 感謝您接受新的貢獻條款!
+ terms declined: 我們很遺憾你已決定不接受新的貢獻者條款。有關詳細信息,請參閱此wiki頁面.
title: 註冊
use openid: 或者,使用 %{logo} OpenID 登入
no_such_user:
- body: 抱歉,沒有名為 %{user} 的使用者。請檢查您的拼字,或者可能是按到錯誤的連結。
+ body: 抱歉,沒有名為 %{user} 的使用者。請檢查您的拼字,或者可能是您按到錯誤的連結。
heading: 使用者 %{user} 不存在
title: 沒有這個使用者
popup:
@@ -1534,8 +1705,8 @@ zh-TW:
remove_friend:
button: 移除朋友
heading: 移除朋友%{user}?
- not_a_friend: "%{name} 並不在您的朋友裡。"
- success: "%{name} 已從您的朋友中移除。"
+ not_a_friend: "%{name}並不是您的朋友。"
+ success: "%{name}已從您的朋友中移除。"
reset_password:
confirm password: 確認密碼:
flash changed: 您的密碼已經變更。
@@ -1547,193 +1718,218 @@ zh-TW:
set_home:
flash success: 家的位置成功的儲存
suspended:
- body: "\n對不起,您的帳戶已因可疑\n活動被自動暫停。 \n
\n\n這項決定將在短期內由管理員審核,或是如果你想討論這一點\n,可以聯絡%{webmaster}。 \n
"
- heading: 帳號已暫停
- title: 帳號已暫停
+ body: "\n對不起,您的帳戶已因可疑\n活動被自動暫停。 \n
\n\n這項決定將在短期內由行政員審核,或是如果你想討論這一點\n,可以聯絡%{webmaster}。 \n
"
+ heading: 帳戶已暫停
+ title: 帳戶已暫停
webmaster: 網站管理員
terms:
agree: 同意
- consider_pd: 除了上述協議,我同意將我的貢獻授權為公共領域
+ consider_pd: 在上述協議之上,我同意將我的貢獻放到公共領域
consider_pd_why: 這是什麼?
decline: 拒絕
+ guidance: 幫助理解這些條款的資料:一個供普通人閱讀的摘要和一些非正式翻譯
heading: 貢獻者條款
legale_names:
france: 法國
italy: 意大利
rest_of_world: 世界其他地區
- legale_select: 請選擇您居住的國家:
+ legale_select: 請選擇您的居住地:
+ read and accept: 請閱讀下面的協議並按同意按鈕,以確認為你現有的和將來的貢獻接受本協議的條款。
title: 貢獻者條款
+ you need to accept or decline: 請先閱讀,然後選擇接受或拒絕新的貢獻者條款,再繼續。
view:
activate_user: 啟用這個使用者
- add as friend: 加入朋友
- ago: (%{time_in_words_ago} 之前)
+ add as friend: 加入為朋友
+ ago: (%{time_in_words_ago}之前)
block_history: 接受封禁
- blocks by me: 被我所阻擋
- blocks on me: 對我的阻擋
+ blocks by me: 我所設的封禁
+ blocks on me: 對我的封禁
comments: 評論
confirm: 確認
confirm_user: 確認這個使用者
- create_block: 阻擋這個使用者
+ create_block: 封禁這個使用者
created from: 建立於:
- ct accepted: 於 %{ago} 前接受
+ ct accepted: 於%{ago}前接受
ct declined: 已拒絕
ct status: 貢獻者條款:
ct undecided: 未決定
deactivate_user: 停用這個使用者
delete_user: 刪除這個使用者
- description: 描述
+ description: 說明
diary: 日記
edits: 編輯
- email address: 電子郵件位址:
+ email address: 電子郵件地址:
+ friends_changesets: 朋友的變更組合
+ friends_diaries: 朋友的日記項目
hide_user: 隱藏這個使用者
if set location: 您可以在%{settings_link}頁面設定您家的位置,以查看附近的用戶。
- km away: "%{count} 公里遠"
- latest edit: 上次編輯於 %{ago}:
- m away: "%{count} 公尺遠"
- mapper since: 成為製圖者於:
- moderator_history: 執行封禁者
+ km away: "%{count}公里遠"
+ latest edit: 上次編輯於%{ago}:
+ m away: "%{count}公尺遠"
+ mapper since: 註冊為製圖者日期:
+ moderator_history: 給予封禁
my comments: 我的評論
my diary: 我的日記
my edits: 我的編輯
+ my messages: 我的訊息
my notes: 我的筆記
my profile: 我的設定檔
my settings: 我的設定值
my traces: 我的軌跡
nearby users: 其他附近的使用者
- new diary entry: 新增日記
+ nearby_changesets: 附近使用者的變更組合
+ nearby_diaries: 附近使用者的日記項目
+ new diary entry: 新增日記項目
no friends: 您尚未加入任何朋友。
- no nearby users: 附近沒有在進行製圖的使用者。
+ no nearby users: 附近沒有已加入製圖的使用者。
notes: 地圖筆記
oauth settings: oauth 設定值
remove as friend: 移除朋友
role:
- administrator: 這個使用者是管理者
+ administrator: 這個使用者是一個行政員
grant:
- administrator: 授予管理員存取權限
- moderator: 此使用者是一個管理者
+ administrator: 授予行政員權限
+ moderator: 授予管理者權限
+ moderator: 這個使用者是一個管理者
+ revoke:
+ administrator: 撇銷行政員權限
+ moderator: 撇銷管理者權限
send message: 傳送訊息
settings_link_text: 設定
spam score: 垃圾郵件分數:
status: 狀態:
traces: 軌跡
- unhide_user: 取消隱藏該使用者
+ unhide_user: 取消隱藏這個使用者
user location: 使用者位置
your friends: 您的朋友
user_block:
blocks_by:
- empty: "%{name} 尚未設定任何阻擋。"
- heading: 列出 %{name} 所設定的阻擋
- title: "%{name} 設的阻擋"
+ empty: "%{name}尚未設定任何封禁。"
+ heading: 列出%{name}所設定的封禁
+ title: "%{name}設的封禁"
blocks_on:
- empty: "%{name} 尚未被阻擋。"
- heading: 對 %{name} 阻擋的清單
- title: 對 %{name} 的阻擋
+ empty: "%{name}尚未被封禁。"
+ heading: 對%{name}封禁的清單
+ title: 對%{name}的封禁
create:
- flash: 已建立對使用者 %{name} 的阻擋。
- try_contacting: 在阻擋使用者之前請先試著聯繫他們,並給予他們一段合理的時間作出回應。
- try_waiting: 在阻擋使用者之前請試著給使用者一段合理的時間來回應。
+ flash: 已建立對使用者%{name}的封禁。
+ try_contacting: 在封禁使用者之前請先嘗試聯繫他,並給予他一段合理的時間作出回應。
+ try_waiting: 在封禁使用者之前請先嘗試給使用者一段合理的時間來回應。
edit:
- back: 檢視所有的阻擋
- heading: 正在編輯對 %{name} 的阻擋
- needs_view: 在清除這個阻擋之前是否需要使用者登入?
- period: 從現在開始,這個使用者要被阻擋不能使用 API 多久。
- reason: "%{name} 之所以被阻擋的理由。請以冷靜、合理的態度,盡量詳細的說明有關情況。請記住,並非所有使用者都了解社群的術語,所以請嘗試使用較為通用的說法。"
- show: 檢視這個阻擋
- submit: 更新阻擋
- title: 正在編輯對 %{name} 的阻擋
+ back: 檢視所有的封禁
+ heading: 正在編輯對%{name}的封禁
+ needs_view: 在清除這項封禁之前是否需要使用者登入?
+ period: 從現在開始,這個使用者將被禁止使用 API 多久。
+ reason: "%{name}之所以被封禁的理由。請盡量以平靜、合理的態度,詳細的說明有關情況。請記住並非所有使用者都了解社群的術語,所以請嘗試使用較為通用的說法。"
+ show: 檢視這項封禁
+ submit: 更新封禁
+ title: 正在編輯對%{name}的封禁
filter:
- block_expired: 這個阻擋已經逾期並且不能再編輯。
- block_period: 阻擋的期間必須是在下拉式選單中可選擇的數值之一。
+ block_expired: 這項封禁已經逾期並且不能被編輯。
+ block_period: 封禁期間必須是在下拉式選單中可選擇的其中一項數值。
helper:
- time_future: 結束於 %{time}。
- time_past: 結束於 %{time} 之前。
- until_login: 作用到這個使用者登入為止。
+ time_future: 於%{time}結束。
+ time_past: 於%{time}之前結束。
+ until_login: 生效直至這個使用者登入為止。
index:
- empty: 尚未設定任何使用者阻擋。
- heading: 使用者阻擋清單
- title: 使用者阻擋
+ empty: 尚未設定任何使用者封禁。
+ heading: 使用者封禁清單
+ title: 使用者封禁
+ model:
+ non_moderator_revoke: 只有管理者才可撇銷封禁。
+ non_moderator_update: 只有管理者才可作出或更新封禁。
new:
- back: 檢視所有阻擋
- heading: 正在建立對 %{name} 的阻擋
- needs_view: 需要使用者登入才能解除這個阻擋
- period: 從現在開始,這個使用者將被 API 阻擋的多久。
- reason: "%{name} 之所以被阻擋的理由。請以冷靜、合理的態度,盡量詳細的說明有關情況。請記住,並非所有使用者都了解社群的術語,所以請嘗試使用較為通用的說法。"
- submit: 建立阻擋
- title: 正在建立對 %{name} 的阻擋
- tried_contacting: 我已聯緊這個使用者並請他們停止。
+ back: 檢視所有封禁
+ heading: 正在建立對 %{name} 的封禁
+ needs_view: 需要使用者登入才能解除這項封禁
+ period: 從現在開始,這個使用者將被禁止使用 API 多久。
+ reason: "%{name} 之所以被封禁的理由。請盡量以平靜、合理的態度,詳細的說明有關情況。請記住訊息會公開讓所有人看到,而並非所有使用者都了解社群的術語,所以請嘗試使用較為通用的說法。"
+ submit: 建立封禁
+ title: 正在建立對 %{name} 的封禁
+ tried_contacting: 我已聯緊這個使用者並請他停止。
tried_waiting: 我已經給予這位使用者合理的時間回應這些問題。
not_found:
back: 返回索引
- sorry: 抱歉,找不到 ID %{id} 的使用者阻擋。
+ sorry: 抱歉,找不到 ID 為%{id}的使用者封禁。
partial:
confirm: 您確定嗎?
- creator_name: 創造者
- display_name: 被阻擋的使用者
+ creator_name: 建立者
+ display_name: 被封禁的使用者
edit: 編輯
next: 下一頁 »
- not_revoked: (不註銷)
+ not_revoked: (沒有撇銷)
previous: « 上一頁
- reason: 阻擋的理由
- revoke: 註銷!
- revoker_name: 提出註銷者
+ reason: 封禁的理由
+ revoke: 撇銷!
+ revoker_name: 撇銷者
show: 顯示
showing_page: 第%{page}頁
status: 狀態
period:
- one: 1 小時
- other: "%{count} 小時"
+ one: 1小時
+ other: "%{count}小時"
revoke:
- confirm: 你確定要註銷這個阻擋?
- flash: 這個阻擋已被註銷。
- heading: 正在註銷 %{block_by} 對 %{block_on} 的阻擋
- past: 這個阻擋已在 %{time} 之前結束,現在不能被註銷了。
- revoke: 註銷!
- time_future: 這個阻擋將於 %{time} 結束。
- title: 正在註銷對 %{block_on} 的阻擋
+ confirm: 你確定要撇銷這項封禁?
+ flash: 這項封禁已被撇銷。
+ heading: 正在撇銷%{block_by}對%{block_on}的封禁
+ past: 這項封禁已在%{time}之前結束,現在不能被撇銷了。
+ revoke: 撇銷!
+ time_future: 這項封禁將於%{time}結束。
+ title: 正在撇銷對%{block_on}的封禁
show:
- back: 檢視所有阻擋
+ back: 檢視所有封禁
confirm: 您確定嗎?
edit: 編輯
- heading: "%{block_on} 被 %{block_by} 設為阻擋"
- needs_view: 在清除這個阻擋之前咳使用者需要先登入。
- reason: 阻擋的理由:
- revoke: 註銷!
- revoker: 註銷:
+ heading: "%{block_on}被%{block_by}封禁"
+ needs_view: 在撇銷這個封禁之前,該使用者需要先登入。
+ reason: 封禁的理由:
+ revoke: 撇銷!
+ revoker: 撇銷者:
show: 顯示
status: 狀態
- time_future: 完成於 %{time}
- time_past: 完成於 %{time} 之前
- title: "%{block_on} 被 %{block_by} 設為阻擋"
+ time_future: 於%{time}內終止
+ time_past: 於%{time}前終止
+ title: "%{block_on}被%{block_by}封禁"
update:
- success: 阻擋已更新。
+ only_creator_can_edit: 只有建立這項封禁的管理者可作出編輯。
+ success: 封禁已更新。
user_role:
filter:
- already_has_role: 這個使用者已經有角色%{role}。
- doesnt_have_role: 這個使用者沒有角色 %{role}。
+ already_has_role: 這個使用者已經有%{role}角色。
+ doesnt_have_role: 這個使用者沒有%{role}角色。
not_a_role: 字串「%{role}」不是有效的角色。
- not_an_administrator: 只有管理者可以進行使用者角色管理,但是您並不是管理者。
+ not_an_administrator: 只有行政員可以進行使用者角色管理,但是您並不是行政員。
grant:
- are_you_sure: 您確定要給予使用者「%{name}」角色「%{role}」?
+ are_you_sure: 您確定要授予使用者「%{name}」「%{role}」的角色?
confirm: 確認
- fail: 無法讓使用者「%{name}」得到角色「%{role}」。請檢查使用者和角色是否都正確。
- heading: 確認角色的賦予
- title: 確認角色的賦予
+ fail: 無法授予使用者「%{name}」「%{role}」的角色。請檢查使用者和角色是否都正確。
+ heading: 確認授與角色
+ title: 確認授與角色
revoke:
- are_you_sure: 您確定要註銷的使用者「%{name}」的角色「%{role}」?
+ are_you_sure: 您確定要撇銷使用者「%{name}」「%{role}」的角色?
confirm: 確認
- fail: 無法註銷使用者「%{name}」的角色「%{role}」。請檢查使用者和角色是否都正確。
- heading: 確認角色的註銷
- title: 確認角色註銷
+ fail: 無法撇銷使用者「%{name}」「%{role}」的角色。請檢查使用者和角色是否都正確。
+ heading: 確認撇銷角色
+ title: 確認撇銷角色
welcome_page:
add_a_note:
- title: 沒有時間編輯嗎?幫忙加上注釋!
+ paragraph_1_html: 如果你只想做一些微小改動,而沒有時間登錄來學習如何編輯,那麼加入一項筆記還是非常容易的。
+ paragraph_2_html: 只要到地圖並點擊筆記圖示: 。這將在地圖上添加一個標記,你可以拖動它,並添加你的筆記,然後點擊保存,其他製圖者會作出查證。
+ title: 沒有時間編輯嗎?可加入筆記!
basic_terms:
+ editor_html: 編輯器是你可以用於編輯地圖的程序或網站。
+ node_html: 節點是地圖上的一個點,例如一間餐廳或一棵樹。
+ paragraph_1_html: OpenStreetMap有自己的術語。以下是一些常用的關鍵詞。
+ tag_html: 標籤是關於節點或路徑的簡要資料,例如餐廳的名字或道路的速度限制。
title: 繪製地圖的基本術語
- introduction_html: 歡迎來到 OpenStreetMap,自由和可編輯的世界地圖。您目前已經登錄 ,可以開始繪製地圖。這裡有一份重要的快速指南。
+ way_html: 路徑是一條線或一個區域,例如一條道路、一條溪、一個湖或一棟建築物。
+ introduction_html: 歡迎來到 OpenStreetMap,自由和可編輯的世界地圖。您目前已經登錄,可以開始繪製地圖。這裡有一份您須知道最重要事項的快速指南。
questions:
+ paragraph_1_html: OpenStreetMap有一些資源,可用於學習本計劃、提出和回答問題,以及討論和紀錄與製作地圖相關的話題。 按此獲取幫助。
title: 有任何問題嗎?
start_mapping: 開始製圖
title: 歡迎!
whats_on_the_map:
- on_html: "OpenStreetMap 是一個製作真實且即時地圖的地方 -\n它包含數以百萬計的建築物、道路以及關於位置其他詳細資料。您可以\n在地圖上畫出任何現實世界中令您感興趣的事物。"
+ off_html: 然而它不包含一些例如評分的主觀意見資料、歷史或假設性的地理特徵,以及有版權的來源資料。除非你獲特別許可,不要抄襲網上或印刷的地圖。
+ on_html: "OpenStreetMap 是一個為真實且現存物件繪製地圖的地方 -\n它包含數以百萬計的建築物、道路以及關於位置其他詳細資料。您可以\n在地圖上畫出任何現實世界中令您感興趣的地理特徵。"
title: 地圖上有什麼
From 5e5c6b3a29ac682227b7224f08f4f3b22b925385 Mon Sep 17 00:00:00 2001
From: Tom Hughes
Date: Tue, 1 Apr 2014 19:17:15 +0100
Subject: [PATCH 02/39] Add support for remote edit over https on port 8112
---
app/assets/javascripts/application.js | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index 6ac398fc5..09ae367f4 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -22,19 +22,22 @@ var querystring = require('querystring-component');
function remoteEditHandler(bbox, object) {
var loaded = false,
- query = {
- left: bbox.getWest() - 0.0001,
- top: bbox.getNorth() + 0.0001,
- right: bbox.getEast() + 0.0001,
- bottom: bbox.getSouth() - 0.0001
- };
+ url = document.location.protocol === "https:" ?
+ "https://127.0.0.1:8112/load_and_zoom?" :
+ "http://127.0.0.1:8111/load_and_zoom?",
+ query = {
+ left: bbox.getWest() - 0.0001,
+ top: bbox.getNorth() + 0.0001,
+ right: bbox.getEast() + 0.0001,
+ bottom: bbox.getSouth() - 0.0001
+ };
if (object) query.select = object.type + object.id;
var iframe = $('
ці блогу opengeodata, на якім таксама ёсць подкасты!
- greeting: Вітанні!
- hopefully_you: Нехта (спадзяемся, вы) хоча стварць рахунак
- introductory_video: Вы можаце прагледзець %{introductory_video_link}.
- more_videos: Яшчэ больш %{more_videos_link}.
- more_videos_here: відэа тут
- user_wiki_page: Рэкамендуем стварыць старонку карыстальніка на wiki, якая будзе уключаць цэтлікі катэгорый, якія адзначаюць, дзе вы знаходзіцеся, напрыклад [[Category:Users_in_London]].
- video_to_openstreetmap: уводнае відэа пра OpenStreetMap
- wiki_signup: Вы таксама можаце захацець зарэгістравацца на OpenStreetMap wiki.
- signup_confirm_plain:
- click_the_link_1: Калі гэта вы, вітаем! Калі ласка, націсніце спасылку ніжэй, каб
- click_the_link_2: пацвердзіць ваш рахунак і прачытаць больш пра OpenStreetMap.
- current_user_1: Спіс бягучых карыстальнікаў па катэгорыях іх геаграфічнага знаходжання
- current_user_2: "даступны на:"
- greeting: Вітанні!
- hopefully_you: Нехта (спадзяемся, вы) хоча стварць рахунак
- introductory_video: "Вы можаце прагледзець уводнае відэа пра OpenStreetMap тут:"
- more_videos: "І яшчэ больш відэа тут:"
- opengeodata: "OpenGeoData.org - афіцыйны блог OpenStreetMap, і таксама мае подкасты:"
- the_wiki: "Пачытайце пра OpenStreetMap на wiki:"
- the_wiki_url: http://wiki.openstreetmap.org/wiki/RU:Beginners_Guide
- user_wiki_1: Рэкамендуем стварыць старонку карыстальніка на wiki, якая будзе уключаць цэтлікі катэгорый,
- user_wiki_2: якія адзначаюць, дзе вы знаходзіцеся, напрыклад [[Category:Users_in_London]].
- wiki_signup: "Вы таксама можаце захацець зарэгістравацца на OpenStreetMap wiki на:"
- wiki_signup_url: http://wiki.openstreetmap.org/index.php?title=Special:UserLogin&type=signup&returnto=RU%3AMain_Page
+ greeting: Прывітанне!
+ subject: "[OpenStreetMap] Сардэчна запрашаем у OpenStreetMap"
+ oauth:
+ oauthorize:
+ allow_read_gpx: чытаць уласныя GPS-сляды.
+ allow_write_api: змяняць карту.
+ allow_write_gpx: адаслаць GPS-сляды.
+ allow_write_notes: змяняць заўвагі.
+ oauthorize_failure:
+ title: Не ўдалося выканаць запыт аўтарызацыі
+ oauthorize_success:
+ verification: "Праверачны код: %{code}."
+ oauth_clients:
+ edit:
+ submit: Рэдагаваць
+ form:
+ allow_write_gpx: адсылаць GPS-сляды.
+ allow_write_notes: змяняць заўвагі.
+ name: Імя
+ index:
+ issued_at: "Выпісаны:"
+ revoke: Адазваны!
+ new:
+ submit: Зарэгістравацца
+ show:
+ allow_write_gpx: адаслаць GPS-сляды.
+ allow_write_notes: змяняць заўвагі.
+ confirm: Вы ўпэўненыя?
+ title: Падрабязнасьці OAuth для %{app_name}
+ redaction:
+ create:
+ flash: Рэдакцыя створана.
+ destroy:
+ error: Адбылася памылка пры знішчэнні гэтай рэдакцыі.
+ flash: Рэдакцыя знішчана.
+ edit:
+ description: Апісанне
+ heading: Праўка рэдакцыі
+ submit: Захаваць рэдакцыю
+ title: Праўка рэдакцыі
+ index:
+ empty: Няма рэдакцый для прагляду.
+ heading: Спіс рэдакцый
+ title: Спіс рэдакцый
+ new:
+ description: Апісанне
+ heading: Калі ласка, увядзіце інфармацыю для новай рэдакцыі
+ submit: Стварыць рэдакцыю
+ title: Стварэнне новай рэдакцыі
+ show:
+ confirm: Вы ўпэўненыя?
+ description: "Апісанне:"
+ destroy: Выдаліць гэтую рэдакцыю
+ edit: Рэдагаваць гэтую рэдакцыю
+ heading: Паказваецца рэдакцыя "%{title}"
+ title: Паказваецца рэдакцыя
+ user: "Стваральнік:"
+ update:
+ flash: Змены былі захаваныя.
site:
edit:
not_public: Вы не дазволілі зрабіць усе вашыя змены публічнымі.
potlatch_unsaved_changes: You have unsaved changes. (To save in Potlatch, you should deselect the current шлях ці point, if editing in list mode, ці click save if you have a save button.)
+ user_page_link: старонка карыстальніка
index:
+ createnote: Дадаць заўвагу
js_1: Вы карыстаецеся вандроўнікам без падтрымкі JavaScript.
js_2: OpenStreetMap выкарыстоўвае JavaScript для адлюстравання карты на сайце.
- js_3: Вы можаце паспрабаваць выкарыстаць статычны агляд Tiles@Home калі не можаце уключыць JavaScript.
- license:
- notice: Ліцэнзіруецца на ўмовах %{license_name} праектам %{project_name} і яго карыстальнікамі.
- project_name: OpenStreetMap
permalink: Спасылка сюды
+ shortlink: Кароткая спасылка
key:
- map_key: Ключ карты
- map_key_tooltip: Легенда для рэндэрынгу mapnik на гэтым узроўні маштабу
+ table:
+ entry:
+ admin: Адміністрацыйная мяжа
+ allotments: Надзелы
+ apron:
+ - Перон аэрапорта
+ - тэрмінал
+ brownfield: Ачышчаная пляцоўка для забудовы
+ building: Значны будынак
+ cemetery: Могілкі
+ centre: Спартыўны цэнтр
+ commercial: Камерцыйная зона
+ common:
+ 1: луг
+ construction: Дарогі ў стадыі будаўніцтва
+ farm: Ферма
+ footway: Пешаходная дарожка
+ forest: Лес
+ golf: Поле для гольфа
+ heathland: Пустка
+ industrial: Прамысловая зона
+ lake:
+ - Возера
+ - вадасховішча
+ military: Ваенная зона
+ motorway: Аўтамабільная дарога
+ park: Парк
+ permissive: Доступ з дазволу
+ pitch: Спартыўная пляцоўка
+ primary: Першасная дарога
+ private: Прыватны доступ
+ rail: Чыгунка
+ reserve: Запаведнік
+ resident: Жылы раён
+ runway:
+ - Узлетна-пасадачная паласа
+ - рулёжная дарожка
+ school:
+ - Школа
+ - універсітэт
+ secondary: Другасная дарога
+ station: Чыгуначны вакзал
+ subway: Метро
+ summit:
+ - Саміт
+ - пік
+ tourist: Турыстычная славутасць
+ track: Трэк
+ tram:
+ 1: трамвай
+ trunk: Магістраль
+ unclassified: Некласіфікаваная дарога
+ unsurfaced: Дарога без пакрыцця
+ wood: Дзікі лес
+ markdown_help:
+ alt: Альтэрнатыўны тэкст
+ first: Першы элемент
+ heading: Загаловак
+ headings: Загалоўкі
+ image: Выява
+ link: Спасылка
+ ordered: Спарадкаваны спіс
+ second: Другі элемент
+ subheading: Падзагаловак
+ text: Тэкст
+ unordered: Неспарадкаваны спіс
+ url: URL-адрас
+ richtext_area:
+ edit: Рэдагаваць
+ preview: Папярэдні прагляд
search:
search: Пошук
- search_help: "напрыклад: 'Мінск', 'Regent Street, Cambridge', 'CB2 5AQ', ці 'post offices near Lünen' больш прыкладаў..."
submit_text: =>
where_am_i: Дзе я?
+ where_am_i_title: Апісаць бягучае месцазнаходжанне з дапамогай пошукавай сістэмы
+ sidebar:
+ close: Зачыніць
+ search_results: Вынікі пошуку
+ time:
+ formats:
+ friendly: "%e %B %Y у %H:%M"
trace:
create:
trace_uploaded: Ваш GPX-файл быў зацягнуты і чакае ўстаўкі ў базу дадзеных. Гэта звычайна робіцца не больш за паўгадзіны. Вы атрымаеце працврджанне аб заканчэнні працэсу па электроннай пошце
upload_trace: Зацягнуць GPS-трэк
delete:
scheduled_for_deletion: Трэк запланаваны на выдаленне
+ description:
+ description_with_count:
+ one: GPX-файл з %{count} кропкай ад %{user}
+ other: GPX-файл з %{count} кропкамі ад %{user}
+ description_without_count: GPX-файл ад %{user}
edit:
description: "Апісанне:"
+ download: сцягнуць
edit: змяніць
filename: "Назва файла:"
+ heading: Рэдагаванне следу %{name}
+ map: карта
owner: "Уладальнік:"
points: "Пунктаў:"
save_button: Запісаць змены
start_coord: "Каардынаты пачатку:"
tags: "Цэтлікі:"
+ title: Рэдагаванне следу %{name}
uploaded_at: "Зацягнуты:"
+ visibility: "Бачнасць:"
+ visibility_help: што гэта значыць?
+ georss:
+ title: GPS-сляды OpenStreetMap
list:
+ description: Агляд нядаўна дададзеных GPS-слядоў
public_traces: Публічныя GPS-трэкі
public_traces_from: Публічныя GPS-трэкі карыстальніка %{user}
tagged_with: " адмечана як %{tags}"
your_traces: Вашыя GPS-трэкі
make_public:
made_public: Трэк зроблены публічным
- no_such_user:
- body: Выбачыце, карыстальніка з імем %{user} не існуе. Калі ласка, праверце правільнасць напісання. Магчыма спасылка, па якой вы дашлі, няслушная.
- heading: Карыстач %{user} не існуе
- title: Няма такога карыстальніка
+ offline:
+ heading: Сховішча GPX-файлаў адключана
+ message: Сховішча і сістэма загрузкі GPX-файлаў ў бягучы момант недаступныя
+ offline_warning:
+ message: Сістэма загрузкі GPX-файлаў ў бягучы момант недаступная
trace:
ago: "%{time_in_words_ago} таму"
by: з дапамогай
count_points: "%{count} пунктаў"
edit: змяніць
edit_map: Змяніць карту
+ identifiable: IDENTIFIABLE
in: у
map: карта
more: яшчэ
@@ -513,20 +1255,28 @@ be:
private: ПРЫВАТНЫ
public: ПУБЛІЧНЫ
trace_details: Прагледзець уласцівасці трэку
+ trackable: TRACKABLE
view_map: Прагледзець карту
trace_form:
- description: Апісанне
- help: Дапамога
+ description: "Апісанне:"
+ help: Даведка
help_url: http://wiki.openstreetmap.org/wiki/RU:Upload
- tags: Цэтлікі
+ tags: "Тэгі:"
upload_button: Зацягнуць
- upload_gpx: Зацягнуць GPX-файл
+ upload_gpx: "Адаслаць GPX-файл:"
+ visibility: "Бачнасць:"
+ visibility_help: што гэта значыць?
trace_header:
see_all_traces: Бачыць усе трэкі
see_your_traces: Бачыць усе свае трэкі
traces_waiting: У вас %{count} трэкаў у чарзе. Калі ласка, пачакайце, пакуль яны будуць апрацаваныя, каб не блакірваць чаргу для астатніх карстальнікаў.
+ upload_trace: Адаслаць GPS-след
trace_optionals:
tags: Цэтлікі
+ trace_paging_nav:
+ newer: Навейшыя сляды
+ older: Старэйшыя сляды
+ showing_page: Старонка %{page}
view:
delete_track: Выдаліць гэты трэк
description: "Апісанне:"
@@ -534,6 +1284,7 @@ be:
edit: змяніць
edit_track: Змяніць бягучы трэк
filename: "Назва файла:"
+ heading: Прагляд следу %{name}
map: карта
none: Няма
owner: "Уладальнік:"
@@ -541,19 +1292,47 @@ be:
points: "Пункты:"
start_coordinates: "Каардынаты пачатку:"
tags: Цэтлікі
+ title: Прагляд следу %{name}
trace_not_found: Трэк не знойдзены!
uploaded: "Зацягнуты:"
+ visibility: "Бачнасць:"
+ visibility:
+ identifiable: Ідэнтыфікуемы (паказваецца ў сьпісе слядоў як ідэнтыфікуемы са спарадкаванымі кропкамі і меткамі часу)
+ private: Прыватны (ананімны з неспарадкаванымі кропкамі)
+ public: Агульны (паказваецца ў сьпісе слядоў як ананімны з неспарадкаванымі кропкамі)
+ trackable: Адсочвальны (ананімны са спарадкаванымі кропкамі і меткамі часу)
user:
account:
+ contributor terms:
+ agreed: Вы пагадзіліся на новыя ўмовы ўдзелу.
+ agreed_with_pd: Вы таксама заявілі, што лічыце, што змены павінны знаходзіцца ў агульнай уласнасці.
+ heading: "Умовы ўдзелу:"
+ link text: што гэта?
+ not yet agreed: Вы яшчэ не пагадзіліся на новыя ўмовы ўдзелу.
+ review link text: Калі ласка, прайдзіце па гэтай спасылцы для Вашай зручнасці, каб разгледзець і прыняць новыя ўмовы ўдзелу.
+ current email address: "Бягучы адрас электроннай пошты:"
+ delete image: Выдаліць бягучую выяву
email never displayed publicly: (ніколі нікому не паказваецца)
flash update success: Звесткі аб карыстальніку паспяхова абноўленыя.
flash update success confirm needed: Звесткі аб карыстальніку паспяхова абноўленыя. Праверце сваю пошту, вам павінны прыйсці запыт на пацверджанне змены адрасу.
+ gravatar:
+ gravatar: Выкарыстоўваць Gravatar
+ link text: што гэта?
home location: "Ваша месцазнаходжанне:"
+ image: "Выява:"
+ keep image: Захаваць бягучую выяву
latitude: "Шырата:"
longitude: "Даўгата:"
make edits public button: Зрабіць усе мае змены публічнымі
- my settings: Мае настаўленні
+ my settings: Мае настройкі
+ new email address: "Новы адрас электроннай пошты:"
+ new image: Дадаць выяву
no home location: Вы не выбралі вашае асноўнае месцазнаходжанне.
+ openid:
+ link: http://wiki.openstreetmap.org/wiki/OpenID
+ link text: што гэта?
+ openid: "OpenID:"
+ preferred editor: "Любімы рэдактар:"
preferred languages: "Абраныя мовы:"
profile description: "Апісанне профілю:"
public editing:
@@ -563,32 +1342,78 @@ be:
enabled link: http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
enabled link text: што гэта?
heading: "Публічнае рэдагаванне:"
+ public editing note:
+ heading: Агульнае рэдагаванне
+ replace image: Замяніць бягучую выяву
return to profile: Вярнуцца да профілю
save changes button: Запісаць змены
title: Змяніць рахунак
update home location on click: Абнавіць каардэнаты, калі я пстрыкну па карце?
confirm:
+ already active: Гэты ўліковы рахунак ужо пацверджаны.
button: Пацвердзіць
- heading: Пацверджанне рахунку
+ heading: Праверце вашу электронную пошту!
+ introduction_1: Мы адправілі вам ліст з пацверджаннем.
+ introduction_2: Пацвердзіць Ваш рахунак, націснуўшы на адпаведную спасылку ў лісце і вы зможаце пачаць маляваць карту.
press confirm button: Націсніце кнопку, каб актывізаваць рахунак.
- success: Рахунак пацверджаны, дзякуй за рэгістрацыю!
+ reconfirm_html: Калі вам трэба зноў даслаць пацверджанне па электроннай пошце, націсніце тут.
confirm_email:
button: Пацвердзіць
failure: Паштовы адрас ужо быў пацверджаны гэтым ключом.
heading: Пацвердзіць змену паштовага адрасу
press confirm button: Націсніце кнопку, каб пацвердзіць ваш новы паштовы адрас.
success: Ваш адрас пацверджаны, дзякуй за рэгістрацыю!
+ confirm_resend:
+ failure: Карыстальнік %{name} не знойдзены.
+ filter:
+ not_an_administrator: Вам неабходна мець правы адміністратара для выканання гэтага дзеяння.
go_public:
flash success: Усе вашыя змены цяпер публічныя, і вам цяпер дазволена рэдагаванне
+ list:
+ heading: Удзельнікі
+ showing:
+ one: Старонка %{page} (%{first_item} з %{items})
+ other: Старонка %{page} (%{first_item}-%{last_item} з %{items})
+ summary: "%{name} створана з %{ip_address} %{date}"
+ summary_no_ip: "%{name} створаны %{date}"
+ title: Удзельнікі
login:
- account not active: Прабачце, ваш рахунак пакуль не актывізаваны.
Калі ласка, націсніце на адпаведную спасылку ў лісце пацверджання рахунку, каб актывізаваць яго.
+ account not active: Прабачце, ваш рахунак пакуль не актывізаваны.
Калі ласка, націсніце на адпаведную спасылку ў лісце пацверджання рахунку, каб актывізаваць яго, ці запытаць новы ліст-пацверджанне на электронную пошту.
auth failure: Прабачце, немагчыма увайсці з такім адрасам і паролем.
+ create account minute: Стварыце рахунак. Гэта зойме ўсяго адну хвіліну.
email or username: "Пошта ці імя карыстальніка:"
heading: Уваход
login_button: Увайсці
lost password link: Згубліл пароль?
+ new to osm: Упершыню на OpenStreetMap?
+ no account: Не маеце асабістага рахунку?
+ openid_logo_alt: Увайсці з дапамогай OpenID
+ openid_providers:
+ aol:
+ alt: Увайсці з дапамогай AOL OpenID
+ title: Уваход праз AOL
+ google:
+ alt: Уваход праз Google OpenID
+ title: Уваход праз Google
+ myopenid:
+ alt: Уваход праз myOpenID OpenID
+ title: Уваход праз myOpenID
+ openid:
+ alt: Увайсці з дапамогай OpenID URL
+ title: Уваход праз OpenID
+ wordpress:
+ alt: Уваход праз Wordpress OpenID
+ title: Уваход праз Wordpress
+ yahoo:
+ title: Уваход праз Yahoo
password: "Пароль:"
+ remember: Памятаць мяне
title: Уваход
+ to make changes: Каб змяняць дадзеныя OpenStreetMap, вы павінны мець асабісты рахунак.
+ logout:
+ heading: Выйсці з OpenStreetMap
+ logout_button: Выйсці
+ title: Выйсці
lost_password:
email address: "Паштовы адрас:"
heading: Забылі пароль?
@@ -598,57 +1423,128 @@ be:
title: згублены пароль
make_friend:
already_a_friend: Вы ўжо сябруеце з %{name}.
+ button: Пасябраваць
failed: Прабачце, немагчыма дадаць %{name} у якасці сябра.
- success: "%{name} цяпер ваш сябар."
+ heading: Пасябраваць з %{user}?
+ success: "%{name} пасябраваў з вамі."
new:
confirm email address: "Пацверджанне паштовага адрасу:"
confirm password: "Пацверджанне паролю:"
contact_webmaster: Калі ласка, спішыцеся з вэм-майстрам каб стварыць вам рахунак - мы паспрабуем выдаць вам рахунак як мага хутчэй.
+ continue: Зарэгістравацца
display name: "Бачнае імя:"
email address: "Паштовы адрас:"
- fill_form: Запоўніце форму, і мы вышлем вам ліст для актывізацыі рахунка.
- flash create success message: Карыстальнік паспяхова створаны. Праверце сваю паштовую скрыню - у ёй павыінен быць код пацверджання, і вы зможаце пачаць маляваць наваі зараз! :-)
Калі ласка, заўважце, што вы не можаце увайсці, пакуль вы не пацвердзілі свой паштовы адрас.
Калі вы карыстаецеся супрацьспамавай сістэмай, якая рассылае запыты на пацверджанне, калі ласка, унясіце ў белы спіс webmaster@openstreetmap.org, бо мы не можам адказваць на запыты пацверджанняў.
- heading: Стварыць рахунак карыстальніка
- license_agreement: Ствараючы рахунак, вы згаджаецеся, што ўсё, што вы зацягнеце на openstreetmap.org і ўсе дадзеныя, створаныя пры выкарыстанні любой утыліты, што звязваецца з openstreetmap.org будуць ліцэнзіравацца (невыключна) на ўмовах гэтай ліцэнзіі Creative Commons (by-sa).
+ license_agreement: Ствараючы рахунак, вы згаджаецеся з умовамі удзелу.
no_auto_account_create: На жаль, мы не можам стварыць для вас рахунак аўтаматычна.
not displayed publicly: Не паказваецца астатнім (глядзіце палітыку неразглашэння)
+ openid: "%{logo} OpenID:"
password: "Пароль:"
+ terms accepted: Дзякуй за прыняцце новых умоў ўдзелу!
title: Стварыць рахунак
no_such_user:
body: Прабачце, карыстальнік %{user} не знойдзены. Please check your spelling, Калі ласка, праверце свой правапіс, ці, магчыма, вам далі няправільную спасылку.
heading: Карыстальнік %{user} не існуе
title: Няма такога карыстальніка
popup:
+ friend: Сябар
nearby mapper: Карыстальнік
your location: Ваша месцазнаходжанне
remove_friend:
+ button: Выдаліць з сяброў
not_a_friend: "%{name} не з'яўляецца вашым сябрам."
success: "%{name} выдалены са спіса сяброў."
reset_password:
+ confirm password: "Пацвердзіце пароль:"
+ flash changed: Ваш пароль быў зменены.
flash token bad: Не знайшоў такі ключ, можа, праверце URL?
+ password: "Пароль:"
+ reset: "Скінуць пароль:"
title: скінуць пароль
set_home:
flash success: Дамашняе месцазнаходжанне паспяхова запісана
+ suspended:
+ heading: Рахунак замарожаны
+ title: Рахунак замарожаны
+ webmaster: вэбмайстар
+ terms:
+ agree: Згодны
+ heading: Умовы ўдзелу
+ legale_names:
+ france: Францыя
+ italy: Італія
+ rest_of_world: Астатні свет
+ title: Умовы ўдзелу
view:
- add as friend: дадаць у сябры
+ activate_user: актывацыя гэтага карыстальніка
+ add as friend: Пасябраваць
ago: (%{time_in_words_ago} таму)
+ comments: Каментары
+ confirm: Пацвердзіць
+ create_block: заблякаваць гэтага карыстальніка
+ ct status: "Умовы ўдзелу:"
+ deactivate_user: адключыць гэтага карыстальніка
+ delete_user: выдаліць гэтага карыстальніка
description: Апісанне
- diary: дзённік
- edits: змены
- if set location: Калі вы вызначыце сваё месцазнаходжанне, ніжэй з'явіцца прыгожая карта і ўсё такое. Вы можаце вызначыць сваё месцазнаходжанне на старонцы %{settings_link}.
+ diary: Дзённік
+ edits: Змены
+ email address: "Адрас электроннай пошты:"
+ hide_user: схаваць гэтага карыстальніка
+ if set location: Вы можаце адзначыць сваё месцазнаходжанне на старонцы %{settings_link}, каб бачыць карыстальнікаў паблізу.
km away: "%{count} км ад вас"
+ latest edit: "Апошняе рэдагаваньне %{ago}:"
mapper since: "Малюе карту з:"
- my diary: мой дзённік
- my edits: мае змены
- my settings: мае настаўленні
- my traces: мае трэкі
- nearby users: "Карыстальнікі непадалёку:"
+ my comments: Мае каментары
+ my diary: Мой дзённік
+ my edits: Мае змены
+ my messages: Мае паведамленні
+ my notes: Мае заўвагі
+ my profile: Мой профіль
+ my settings: Мае настройкі
+ my traces: Мае трэкі
+ nearby users: "Карыстальнікі паблізу:"
new diary entry: новы запіс у дзённіку
no friends: Вы пакуль не дадалі нікога ў сябры.
- no nearby users: Пакуль няма карыстальнікаў, што адмецілі сваё месцазнаходжанне непадалёку.
- remove as friend: выдаліць з сяброў
- send message: даслаць паведамленне
+ no nearby users: Пакуль што няма карыстальнікаў, якія пазначылі сваё месцазнаходжанне паблізу.
+ remove as friend: Выдаліць з сяброў
+ role:
+ administrator: Гэты карыстальнік з'яўляецца адміністратарам
+ moderator: Гэты карыстальнік з'яўляецца мадэратарам
+ revoke:
+ administrator: Адклікаць доступ з правамі адміністратара
+ send message: Адаслаць паведамленне
settings_link_text: настаўленняў
- traces: трэкі
+ traces: Трэкі
user location: Месцазнаходжанне
your friends: Вашыя сябры
+ user_block:
+ helper:
+ time_future: Заканчваецца праз %{time}.
+ not_found:
+ back: Вярнуцца да пераліку
+ partial:
+ next: Далей »
+ not_revoked: (не адкліканы)
+ previous: « Назад
+ revoker_name: Адкліканы
+ showing_page: Старонка %{page}
+ status: Статус
+ show:
+ back: Праглядзець усе блакіроўкі
+ confirm: Вы ўпэўненыя?
+ edit: Рэдагаваць
+ reason: "Прычына блакіроўкі:"
+ revoke: Адазваць!
+ show: Паказаць
+ status: Статус
+ time_future: Заканчваецца праз %{time}
+ time_past: Скончылася %{time} таму
+ user_role:
+ grant:
+ confirm: Пацвердзіць
+ revoke:
+ confirm: Пацвердзіць
+ welcome_page:
+ questions:
+ title: Ёсць пытанні?
+ start_mapping: Пачаць маляваць карту
+ title: Вітаем!
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index e81c19cd1..2a2073dd2 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -12,6 +12,7 @@
# Author: Misibacsi
# Author: Nemo bis
# Author: R-Joe
+# Author: Samat
# Author: Sucy
# Author: Tacsipacsi
hu:
@@ -114,17 +115,17 @@ hu:
way: Vonalak (%{count})
way_paginated: Vonalak (%{x}-%{y} összesen %{count})
closed: Lezárva
- closed_by_html: Lezárva %{time} %{user} által
+ closed_by_html: Lezárta %{user} %{time}
closed_html: Lezárva %{time}
containing_relation:
entry: "Kapcsolat: %{relation_name}"
entry_role: "Kapcsolat: %{relation_name} (mint %{relation_role})"
created: Létrehozva
- created_by_html: Létrehozve %{time} %{user} által
+ created_by_html: Létrehozta %{user} %{time}
created_html: Létrehozva %{time}
- deleted_by_html: Törölve %{time} %{user} által
+ deleted_by_html: Törölte %{user} %{time}
download_xml: XML letöltése
- edited_by_html: Szerkesztve %{time} %{user} által
+ edited_by_html: Szerkesztette %{user} %{time}
in_changeset: Módosításcsomag
location: "Hely:"
no_comment: (nincs hozzászólás)
@@ -139,20 +140,20 @@ hu:
relation: kapcsolat
way: vonal
note:
- closed_by: Megoldva %{user} által %{when}
- closed_by_anonymous: Megoldva ismeretlen által %{when}
+ closed_by: Megoldotta %{user} %{when}
+ closed_by_anonymous: Megoldva névtelenül %{when}
closed_title: "Megoldott jegyzet: %{note_name}"
commented_by: "%{user} megjegyzése %{when}"
commented_by_anonymous: Névtelen felhasználó megjegyzése %{when}
description: Leírás
- hidden_by: Elrejtve %{user} által %{when}
+ hidden_by: Elrejtette %{user} %{when}
hidden_title: Rejtett jegyzet %{note_name}
new_note: Új jegyzet
- open_by: Létrehozva %{user} által %{when}
- open_by_anonymous: Létrehozva ismeretlen által %{when}
+ open_by: Létrehozta %{user} %{when}
+ open_by_anonymous: Létrehozva névtelenül %{when}
open_title: "Megoldatlan jegyzet: %{note_name}"
- reopened_by: Újraaktiválva %{user} által %{when}
- reopened_by_anonymous: Újraaktiválva ismeretlen által %{when}
+ reopened_by: Újraaktiválta %{user} %{when}
+ reopened_by_anonymous: Újraaktiválva névtelenül %{when}
title: "Jegyzet: %{id}"
part_of: Része ennek
redacted:
@@ -341,20 +342,28 @@ hu:
advice: Ha a fenti exportálás sikertelen lenne, próbáld meg az alábbi listából valamelyik lehetőséget.
body: Ez a terület túl nagy ahhoz, hogy exportálásra kerüljön OpenStreetMap XML adatként. Közelíts, vagy jelölj ki kisebb területet. Esetleg használd az alábbi listából valamelyik nagy adatmennyiségek letöltését támogató módszert.
geofabrik:
+ description: Kontinensek, országok és kiválasztott városok rendszeresen frissített kivonata
title: Geofabrik letöltések
other:
title: Más források
overpass:
description: A megjelenített befoglaló keret letöltése egy OpenStreetMap tükörserverről
+ title: Overpass API
planet:
description: A teljes OpenStreetMap adatbázis rendszeresen frissített másolatai
+ title: Planet OSM
zoom: Nagyítási szint
title: Exportálás
fixthemap:
how_to_help:
+ add_a_note:
+ instructions_html: Csak kattints a ikonra a térképnézetben. Ez felrak egy helyjelölőt a térképre, amit húzással tudsz a megfelelő helyre mozgatni. Írd meg hozzá az üzeneted, majd kattints a mentésre, és a többi térképész meg fogja vizsgálni.
join_the_community:
+ explanation_html: Ha bármilyen hibát találtál a térképadatokban, például hiányzik egy út vagy cím, a legjobb, ha csatlakozol az OpenStreetMap közösséghez és kijavítod az adatot saját magad.
title: Csatlakozás a közösséghez
title: Hogyan segíthetsz
+ other_concerns:
+ title: Egyéb aggályok
title: Hibabejelentés / Térkép javítása
geocoder:
description:
@@ -393,11 +402,13 @@ hu:
us_postcode: Eredmények a Geocoder.us-ról
search_osm_nominatim:
admin_levels:
+ level10: Városrészhatár
level2: Országhatár
level4: Államhatár
level5: Régióhatár
level6: Megyehatár
level8: Városhatár
+ level9: Faluhatár
prefix:
aerialway:
chair_lift: Libegő
@@ -886,10 +897,12 @@ hu:
url: https://help.openstreetmap.org/
welcome:
title: Üdvözlünk az OSM-en
+ url: /welcome
wiki:
title: wiki.openstreetmap.org
url: https://wiki.openstreetmap.org/wiki/Hu:Main_Page
javascripts:
+ close: Bezárás
key:
title: Jelmagyarázat
tooltip: Jelmagyarázat
@@ -897,6 +910,7 @@ hu:
map:
base:
cycle_map: Kerékpártérkép
+ hot: Humanitáriánus
mapquest: MapQuest Open
standard: Alapértelmezett
transport_map: Tömegközlekedési térkép
@@ -920,18 +934,28 @@ hu:
intro: Hibát találtál vagy valami hiányzik? Tudasd a többi térképezővel hogy javítani tudjuk. Mozgasd a jelölőt a megfelelő helyre és minél pontosabban írd le a problémát. (Kérjük itt ne adj meg személyes adatokat.)
show:
anonymous_warning: Ez a jegyzet anonim felhasználók megjegyzéseit is tartalmazza melyeket ellenőrizni szükséges.
- comment: Megjegyzés hozzáadása
- comment_and_resolve: Megjegyzés hozzáadása és megoldás
+ comment: Hozzászólás
+ comment_and_resolve: Hozzászólás és lezárás
hide: Elrejtés
reactivate: Újraaktiválás
resolve: Megoldás
share:
+ cancel: Mégsem
+ center_marker: Térkép középpontja a helyjelölő
+ custom_dimensions: Kiterjedés megadása
download: Letöltés
embed: HTML
format: "Formátum:"
+ image: Kép
+ image_size: "A kép az alapértelmezett réteget fogja tartalmazni ekkora méretben:"
+ include_marker: Helyjelölővel
+ link: Link vagy HTML
long_link: Link
+ paste_html: Weboldalba beágyazáshoz illeszd be ezt a HTML-t
+ scale: "Méretarány:"
short_link: Rövid link
short_url: Rövid URL
+ title: Megosztás
view_larger_map: Nagyobb térkép
site:
createnote_disabled_tooltip: Nagyíts térképes jegyzet hozzáadásához
@@ -1095,16 +1119,29 @@ hu:
description:
closed_at_by_html: "Megoldva: %{when} (%{user})"
closed_at_html: "Megoldva: %{when}"
+ commented_at_by_html: Frissítette %{user} %{when}
commented_at_html: "Frissítve: %{when}"
+ opened_at_by_html: Létrehozta %{user} %{when}
opened_at_html: Létrehozva %{when}
+ reopened_at_by_html: Újraaktiválta %{user} %{when}
reopened_at_html: "Újra aktiválva: %{when}"
entry:
+ comment: Hozzászólás
full: Teljes jegyzet
mine:
ago_html: "%{when}"
+ created_at: Létrehozva ekkor
+ creator: Létrehozta
+ description: Leírás
heading: "%{user} jegyzetei"
+ id: ID
+ last_changed: Utoljára módosítva
rss:
+ closed: Lezárt megjegyzés (%{place} közelében)
+ commented: Új hozzászólás (%{place} közelében)
description_item: RSS hírcsatorna a %{id} jegyzethez
+ opened: Új megjegyzés (%{place} közelében)
+ reopened: újraaktivált megjegyzés (%{place} közelében)
title: OpenStreetMap jegyzetek
notifier:
diary_comment_notification:
@@ -1191,6 +1228,10 @@ hu:
allow_write_notes: jegyzet módosítása
allow_write_prefs: felhasználói beállítások módosítása.
request_access: A(z) %{app_name} alkalmazás hozzáférést kér a felhasználói fiókodhoz, %{user}. Kérlek, jelöld, ha azt szeretnéd, hogy az alkalmazás rendelkezzen a következő képességekkel. Választhatsz olyan sokat vagy keveset, amennyit szeretnél.
+ oauthorize_failure:
+ title: Az azonosítás sikertelen.
+ oauthorize_success:
+ verification: "Az ellenőrző kód: %{code}."
revoke:
flash: Visszavontad az utalványt a(z) %{application} alkalmazáshoz
oauth_clients:
@@ -1405,6 +1446,8 @@ hu:
uploaded_at: "Feltöltve:"
visibility: "Láthatóság:"
visibility_help: Mit jelent ez?
+ georss:
+ title: OpenStreetMap GPS nyomvonalak
list:
description: Legfrissebb GPS nyomvonalak tallózása
empty_html: Még nincs mit megjeleníteni. Tölts fel új nyomvonalat, vagy olvass bővebben a GPS nyomvonalrögzítésről a wiki lapon.
@@ -1720,7 +1763,9 @@ hu:
my comments: Saját megjegyzések
my diary: Naplóm
my edits: Szerkesztéseim
+ my messages: Üzeneteim
my notes: Saját jegyzeteim
+ my profile: Profilom
my settings: Beállításaim
my traces: Saját nyomvonalak
nearby users: Egyéb közeli felhasználók
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index a24a2abc0..dd5a13cc2 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -1771,7 +1771,7 @@ ko:
france: 프랑스
italy: 이탈리아
rest_of_world: 나머지 국가
- legale_select: "거주 국가를 선택하세요:"
+ legale_select: "거주 국가:"
read and accept: 아래의 계약을 읽고 기존 및 앞으로의 기여가 계약 약관에 동의했는지 확인하려면 동의 버튼을 누르세요.
title: 기여자 약관
you need to accept or decline: 계속하려면 새 기여자 약관을 읽고 나서 동의나 거부하세요.
diff --git a/config/locales/lb.yml b/config/locales/lb.yml
index 8fd2620a0..d068d497d 100644
--- a/config/locales/lb.yml
+++ b/config/locales/lb.yml
@@ -532,6 +532,8 @@ lb:
sent_message_summary:
delete_button: Läschen
note:
+ mine:
+ description: Beschreiwung
rss:
title: OpenStreetMap Notizen
notifier:
@@ -554,6 +556,7 @@ lb:
footer_html: Dir kënnt de Message och op %{readurl} liesen an Dir kënnt op %{replyurl} äntwerten
hi: Salut %{to_user},
note_comment_notification:
+ anonymous: En anonyme Benotzer
greeting: Salut,
signup_confirm:
greeting: Bonjour !
diff --git a/config/locales/mk.yml b/config/locales/mk.yml
index 71f4f3c33..d1dfdc373 100644
--- a/config/locales/mk.yml
+++ b/config/locales/mk.yml
@@ -74,7 +74,7 @@ mk:
relation: Однос
relation_member: Член на однос
relation_tag: Ознака за однос
- session: Сесија
+ session: Седница
trace: Трага
tracepoint: Точка на трага
tracetag: Ознака за трага
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 5f927d1fb..1ea20d030 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -967,7 +967,7 @@ pt-BR:
comment_and_resolve: Comentar e resolver
hide: Esconder
reactivate: Reativar
- resolve: Resolver
+ resolve: Marcar como Resolvido
share:
cancel: Cancelar
center_marker: Centralizar o mapa no marcador
@@ -1878,7 +1878,7 @@ pt-BR:
title: Bloqueios em %{name}
create:
flash: Bloquear o usuário %{name}.
- try_contacting: Por favor, tente contactar o usuário e dê a ele um tempo razoável antes de bloqueá-lo
+ try_contacting: Por favor, tente contatar o usuário e dê a ele um tempo razoável antes de bloqueá-lo.
try_waiting: Por favor, tente dar ao usuário um tempo razoável para responder antes de bloqueá-lo.
edit:
back: Ver todos bloqueios
From 2bdd542d9ba17cac34bc12437a4a8c815bdfe2ef Mon Sep 17 00:00:00 2001
From: Tom Hughes
Date: Mon, 12 May 2014 15:55:00 +0100
Subject: [PATCH 16/39] Require the migration support code
---
db/migrate/028_add_more_changeset_indexes.rb | 2 ++
1 file changed, 2 insertions(+)
diff --git a/db/migrate/028_add_more_changeset_indexes.rb b/db/migrate/028_add_more_changeset_indexes.rb
index d93cc79e7..45d014e9e 100644
--- a/db/migrate/028_add_more_changeset_indexes.rb
+++ b/db/migrate/028_add_more_changeset_indexes.rb
@@ -1,3 +1,5 @@
+require 'migrate'
+
class AddMoreChangesetIndexes < ActiveRecord::Migration
def self.up
add_index "changesets", ["created_at"], :name => "changesets_created_at_idx"
From 5da273027f53cf4413aa385ea41ffacee5acf039 Mon Sep 17 00:00:00 2001
From: Tom Hughes
Date: Sun, 18 May 2014 17:16:36 +0100
Subject: [PATCH 17/39] Isolate object names from the database with a tag
Fixes #743
---
app/helpers/browse_helper.rb | 6 +++---
app/views/browse/_node.html.erb | 2 +-
app/views/browse/_relation_member.html.erb | 4 ++--
app/views/browse/_way.html.erb | 4 ++--
app/views/browse/changeset.html.erb | 6 +++---
app/views/browse/feature.html.erb | 2 +-
app/views/browse/history.html.erb | 2 +-
config/locales/en.yml | 2 +-
test/helpers/browse_helper_test.rb | 18 +++++++++---------
9 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/app/helpers/browse_helper.rb b/app/helpers/browse_helper.rb
index b192a63d5..7562535c1 100644
--- a/app/helpers/browse_helper.rb
+++ b/app/helpers/browse_helper.rb
@@ -14,13 +14,13 @@ module BrowseHelper
# away redacted version tag information.
unless object.redacted?
if object.tags.include? "name:#{I18n.locale}"
- name = t 'printable_name.with_name', :name => object.tags["name:#{I18n.locale}"].to_s, :id => name
+ name = t 'printable_name.with_name_html', :name => content_tag(:bdi, object.tags["name:#{I18n.locale}"].to_s ), :id => name
elsif object.tags.include? 'name'
- name = t 'printable_name.with_name', :name => object.tags['name'].to_s, :id => name
+ name = t 'printable_name.with_name_html', :name => content_tag(:bdi, object.tags['name'].to_s ), :id => name
end
end
- return name
+ name
end
def link_class(type, object)
diff --git a/app/views/browse/_node.html.erb b/app/views/browse/_node.html.erb
index 581c49b09..873360bb2 100644
--- a/app/views/browse/_node.html.erb
+++ b/app/views/browse/_node.html.erb
@@ -14,7 +14,7 @@
<%= t 'browse.part_of' %>
<% node.ways.uniq.each do |way| %>
- - <%= link_to h(printable_name(way)), { :action => "way", :id => way.id.to_s }, :class => link_class('way', way), :title => link_title(way) %>
+ - <%= link_to printable_name(way), { :action => "way", :id => way.id.to_s }, :class => link_class('way', way), :title => link_title(way) %>
<% end %>
<%= render :partial => "containing_relation", :collection => node.containing_relation_members.uniq %>
diff --git a/app/views/browse/_relation_member.html.erb b/app/views/browse/_relation_member.html.erb
index 2673df3c3..0d17de349 100644
--- a/app/views/browse/_relation_member.html.erb
+++ b/app/views/browse/_relation_member.html.erb
@@ -1,6 +1,6 @@
<%
member_class = link_class(relation_member.member_type.downcase, relation_member.member)
- linked_name = link_to h(printable_name(relation_member.member)), { :action => relation_member.member_type.downcase, :id => relation_member.member_id.to_s }, :title => link_title(relation_member.member)
+ linked_name = link_to printable_name(relation_member.member), { :action => relation_member.member_type.downcase, :id => relation_member.member_id.to_s }, :title => link_title(relation_member.member)
type_str = t'browse.relation_member.type.' + relation_member.member_type.downcase
%>
<%=
@@ -9,4 +9,4 @@
else
raw t'browse.relation_member.entry_role', :type => type_str, :name => linked_name, :role => h(relation_member.member_role)
end
- %>
\ No newline at end of file
+ %>
diff --git a/app/views/browse/_way.html.erb b/app/views/browse/_way.html.erb
index aff405dde..b1dffb9ef 100644
--- a/app/views/browse/_way.html.erb
+++ b/app/views/browse/_way.html.erb
@@ -15,10 +15,10 @@
<% way.way_nodes.each do |wn| %>
-
- <%= link_to h(printable_name(wn.node)), { :action => "node", :id => wn.node_id.to_s }, :class => link_class('node', wn.node), :title => link_title(wn.node) %>
+ <%= link_to printable_name(wn.node), { :action => "node", :id => wn.node_id.to_s }, :class => link_class('node', wn.node), :title => link_title(wn.node) %>
<% related_ways = wn.node.ways.reject { |w| w.id == wn.way_id } %>
<% if related_ways.size > 0 then %>
- (<%= raw t 'browse.way.also_part_of', :count => related_ways.size, :related_ways => related_ways.map { |w| link_to(h(printable_name(w)), { :action => "way", :id => w.id.to_s }, :class => link_class('way', w), :title => link_title(w) ) }.to_sentence %>)
+ (<%= raw t 'browse.way.also_part_of', :count => related_ways.size, :related_ways => related_ways.map { |w| link_to(printable_name(w), { :action => "way", :id => w.id.to_s }, :class => link_class('way', w), :title => link_title(w) ) }.to_sentence %>)
<% end %>
<% end %>
diff --git a/app/views/browse/changeset.html.erb b/app/views/browse/changeset.html.erb
index 31799f0e9..84d85df3c 100644
--- a/app/views/browse/changeset.html.erb
+++ b/app/views/browse/changeset.html.erb
@@ -18,7 +18,7 @@
<% @ways.each do |way| %>
- - <%= link_to h(printable_name(way, true)), { :action => "way", :id => way.way_id.to_s }, :class => link_class('way', way), :title => link_title(way) %>
+ - <%= link_to printable_name(way, true), { :action => "way", :id => way.way_id.to_s }, :class => link_class('way', way), :title => link_title(way) %>
<% end %>
<% end %>
@@ -30,7 +30,7 @@
<% @relations.each do |relation| %>
- - <%= link_to h(printable_name(relation, true)), { :action => "relation", :id => relation.relation_id.to_s }, :class => link_class('relation', relation), :title => link_title(relation) %>
+ - <%= link_to printable_name(relation, true), { :action => "relation", :id => relation.relation_id.to_s }, :class => link_class('relation', relation), :title => link_title(relation) %>
<% end %>
<% end %>
@@ -42,7 +42,7 @@
<% @nodes.each do |node| %>
- - <%= link_to h(printable_name(node, true)), { :action => "node", :id => node.node_id.to_s }, :class => link_class('node', node), :title => link_title(node) %>
+ - <%= link_to printable_name(node, true), { :action => "node", :id => node.node_id.to_s }, :class => link_class('node', node), :title => link_title(node) %>
<% end %>
<% end %>
diff --git a/app/views/browse/feature.html.erb b/app/views/browse/feature.html.erb
index 1e0f118d8..38657f4d1 100644
--- a/app/views/browse/feature.html.erb
+++ b/app/views/browse/feature.html.erb
@@ -2,7 +2,7 @@
- <%= t("browse.#{@type}.title", :name => printable_name(@feature)) %>
+ <%= raw t("browse.#{@type}.title", :name => printable_name(@feature)) %>
<%= render :partial => @type, :object => @feature %>
diff --git a/app/views/browse/history.html.erb b/app/views/browse/history.html.erb
index fa483bfb0..5f5dd4db3 100644
--- a/app/views/browse/history.html.erb
+++ b/app/views/browse/history.html.erb
@@ -2,7 +2,7 @@
- <%= t("browse.#{@type}.history_title", :name => printable_name(@feature)) %>
+ <%= raw t("browse.#{@type}.history_title", :name => printable_name(@feature)) %>
<%= render :partial => @type, :collection => @feature.send("old_#{@type}s").reverse %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 94537c1fb..9e117e3de 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -79,7 +79,7 @@ en:
printable_name:
with_id: "%{id}"
with_version: "%{id}, v%{version}"
- with_name: "%{name} (%{id})"
+ with_name_html: "%{name} (%{id})"
editor:
default: "Default (currently %{name})"
potlatch:
diff --git a/test/helpers/browse_helper_test.rb b/test/helpers/browse_helper_test.rb
index a48ac4df8..0abcd6df1 100644
--- a/test/helpers/browse_helper_test.rb
+++ b/test/helpers/browse_helper_test.rb
@@ -14,28 +14,28 @@ class BrowseHelperTest < ActionView::TestCase
def test_printable_name
assert_equal "17", printable_name(current_nodes(:redacted_node))
- assert_equal "Test Node (18)", printable_name(current_nodes(:node_with_name))
- assert_equal "Test Node (18)", printable_name(nodes(:node_with_name_current_version))
+ assert_equal "Test Node (18)", printable_name(current_nodes(:node_with_name))
+ assert_equal "Test Node (18)", printable_name(nodes(:node_with_name_current_version))
assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
- assert_equal "Test Node (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
+ assert_equal "Test Node (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
I18n.locale = "ru"
assert_equal "17", printable_name(current_nodes(:redacted_node))
- assert_equal "проверки узла (18)", printable_name(current_nodes(:node_with_name))
- assert_equal "проверки узла (18)", printable_name(nodes(:node_with_name_current_version))
+ assert_equal "проверки узла (18)", printable_name(current_nodes(:node_with_name))
+ assert_equal "проверки узла (18)", printable_name(nodes(:node_with_name_current_version))
assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
- assert_equal "проверки узла (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
+ assert_equal "проверки узла (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
I18n.locale = "de"
assert_equal "17", printable_name(current_nodes(:redacted_node))
- assert_equal "Test Node (18)", printable_name(current_nodes(:node_with_name))
- assert_equal "Test Node (18)", printable_name(nodes(:node_with_name_current_version))
+ assert_equal "Test Node (18)", printable_name(current_nodes(:node_with_name))
+ assert_equal "Test Node (18)", printable_name(nodes(:node_with_name_current_version))
assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
- assert_equal "Test Node (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
+ assert_equal "Test Node (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
end
From 1eab367de5950af5396756dbf09cc9bd3edc3b8f Mon Sep 17 00:00:00 2001
From: Martin Raifer
Date: Sun, 18 May 2014 17:07:31 +0200
Subject: [PATCH 18/39] Instruct iD to load gpx file
When one clicks on the edit link of an uploaded GPX file, this instructs
the iD editor to load the respective GPX data from the appropriate URL.
See https://github.com/openstreetmap/iD/issues/970#issuecomment-43439476.
---
app/views/site/_id.html.erb | 4 ++++
config/routes.rb | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/app/views/site/_id.html.erb b/app/views/site/_id.html.erb
index f88942669..db611f428 100644
--- a/app/views/site/_id.html.erb
+++ b/app/views/site/_id.html.erb
@@ -26,9 +26,13 @@
params.background = hashParams.background;
}
+<% if params[:gpx] -%>
+ params.gpx = '<%= trace_data_url(params[:gpx]) %>';
+<% else -%>
if (hashParams.gpx) {
params.gpx = hashParams.gpx;
}
+<% end -%>
$('#id-embed').attr('src', '<%= id_url :locale => params[:locale] %>#' + querystring.stringify(params));
diff --git a/config/routes.rb b/config/routes.rb
index e9f593d92..3357f911d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -194,7 +194,7 @@ OpenStreetMap::Application.routes.draw do
match '/traces/mine/page/:page' => 'trace#mine', :via => :get
match '/traces/mine' => 'trace#mine', :via => :get
match '/trace/create' => 'trace#create', :via => [:get, :post]
- match '/trace/:id/data' => 'trace#data', :via => :get, :id => /\d+/
+ match '/trace/:id/data' => 'trace#data', :via => :get, :id => /\d+/, :as => "trace_data"
match '/trace/:id/edit' => 'trace#edit', :via => [:get, :post, :patch], :id => /\d+/, :as => "trace_edit"
match '/trace/:id/delete' => 'trace#delete', :via => :post, :id => /\d+/
From 0d187c5c711c5381872c21309fa74087b4896c49 Mon Sep 17 00:00:00 2001
From: Tom Hughes
Date: Mon, 19 May 2014 00:16:28 +0100
Subject: [PATCH 19/39] Replace and with Unicode markers in titles
---
app/helpers/title_helper.rb | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/app/helpers/title_helper.rb b/app/helpers/title_helper.rb
index da4ad8967..8cacdf208 100644
--- a/app/helpers/title_helper.rb
+++ b/app/helpers/title_helper.rb
@@ -1,6 +1,11 @@
module TitleHelper
def set_title(title = false)
- response.headers["X-Page-Title"] = t('layouts.project_name.title') + (title ? ' | ' + title : '')
- @title = title
+ if title
+ @title = title.gsub("", "\u202a").gsub("", "\u202c")
+ response.headers["X-Page-Title"] = t('layouts.project_name.title') + ' | ' + @title
+ else
+ @title = title
+ response.headers["X-Page-Title"] = t('layouts.project_name.title')
+ end
end
end
From e010a326a880934fc49b1691b308509451eac080 Mon Sep 17 00:00:00 2001
From: Tom Hughes
Date: Mon, 19 May 2014 00:16:48 +0100
Subject: [PATCH 20/39] Wrap the ID in tags for RTL locales
---
app/helpers/browse_helper.rb | 4 ++--
test/helpers/browse_helper_test.rb | 18 +++++++++---------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/app/helpers/browse_helper.rb b/app/helpers/browse_helper.rb
index 7562535c1..2b9cb6f99 100644
--- a/app/helpers/browse_helper.rb
+++ b/app/helpers/browse_helper.rb
@@ -14,9 +14,9 @@ module BrowseHelper
# away redacted version tag information.
unless object.redacted?
if object.tags.include? "name:#{I18n.locale}"
- name = t 'printable_name.with_name_html', :name => content_tag(:bdi, object.tags["name:#{I18n.locale}"].to_s ), :id => name
+ name = t 'printable_name.with_name_html', :name => content_tag(:bdi, object.tags["name:#{I18n.locale}"].to_s ), :id => content_tag(:bdi, name)
elsif object.tags.include? 'name'
- name = t 'printable_name.with_name_html', :name => content_tag(:bdi, object.tags['name'].to_s ), :id => name
+ name = t 'printable_name.with_name_html', :name => content_tag(:bdi, object.tags['name'].to_s ), :id => content_tag(:bdi, name)
end
end
diff --git a/test/helpers/browse_helper_test.rb b/test/helpers/browse_helper_test.rb
index 0abcd6df1..38d8c2dff 100644
--- a/test/helpers/browse_helper_test.rb
+++ b/test/helpers/browse_helper_test.rb
@@ -14,28 +14,28 @@ class BrowseHelperTest < ActionView::TestCase
def test_printable_name
assert_equal "17", printable_name(current_nodes(:redacted_node))
- assert_equal "Test Node (18)", printable_name(current_nodes(:node_with_name))
- assert_equal "Test Node (18)", printable_name(nodes(:node_with_name_current_version))
+ assert_equal "Test Node (18)", printable_name(current_nodes(:node_with_name))
+ assert_equal "Test Node (18)", printable_name(nodes(:node_with_name_current_version))
assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
- assert_equal "Test Node (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
+ assert_equal "Test Node (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
I18n.locale = "ru"
assert_equal "17", printable_name(current_nodes(:redacted_node))
- assert_equal "проверки узла (18)", printable_name(current_nodes(:node_with_name))
- assert_equal "проверки узла (18)", printable_name(nodes(:node_with_name_current_version))
+ assert_equal "проверки узла (18)", printable_name(current_nodes(:node_with_name))
+ assert_equal "проверки узла (18)", printable_name(nodes(:node_with_name_current_version))
assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
- assert_equal "проверки узла (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
+ assert_equal "проверки узла (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
I18n.locale = "de"
assert_equal "17", printable_name(current_nodes(:redacted_node))
- assert_equal "Test Node (18)", printable_name(current_nodes(:node_with_name))
- assert_equal "Test Node (18)", printable_name(nodes(:node_with_name_current_version))
+ assert_equal "Test Node (18)", printable_name(current_nodes(:node_with_name))
+ assert_equal "Test Node (18)", printable_name(nodes(:node_with_name_current_version))
assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
- assert_equal "Test Node (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
+ assert_equal "Test Node (18, v2)", printable_name(nodes(:node_with_name_current_version), true)
assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
end
From f3166176d711c6399dfb57896b3f668c4161d8e6 Mon Sep 17 00:00:00 2001
From: Tom Hughes
Date: Fri, 16 May 2014 22:39:38 +0100
Subject: [PATCH 21/39] Qualify SCALE in tests
---
test/controllers/changeset_controller_test.rb | 24 +++++++++----------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/test/controllers/changeset_controller_test.rb b/test/controllers/changeset_controller_test.rb
index 25bb936d9..fc4f4b681 100644
--- a/test/controllers/changeset_controller_test.rb
+++ b/test/controllers/changeset_controller_test.rb
@@ -537,10 +537,10 @@ EOF
# check that the changeset bbox is within bounds
cs = Changeset.find(changeset_id)
- assert cs.min_lon >= -180 * SCALE, "Minimum longitude (#{cs.min_lon / SCALE}) should be >= -180 to be valid."
- assert cs.max_lon <= 180 * SCALE, "Maximum longitude (#{cs.max_lon / SCALE}) should be <= 180 to be valid."
- assert cs.min_lat >= -90 * SCALE, "Minimum latitude (#{cs.min_lat / SCALE}) should be >= -90 to be valid."
- assert cs.max_lat >= 90 * SCALE, "Maximum latitude (#{cs.max_lat / SCALE}) should be <= 90 to be valid."
+ assert cs.min_lon >= -180 * GeoRecord::SCALE, "Minimum longitude (#{cs.min_lon / GeoRecord::SCALE}) should be >= -180 to be valid."
+ assert cs.max_lon <= 180 * GeoRecord::SCALE, "Maximum longitude (#{cs.max_lon / GeoRecord::SCALE}) should be <= 180 to be valid."
+ assert cs.min_lat >= -90 * GeoRecord::SCALE, "Minimum latitude (#{cs.min_lat / GeoRecord::SCALE}) should be >= -90 to be valid."
+ assert cs.max_lat >= 90 * GeoRecord::SCALE, "Maximum latitude (#{cs.max_lat / GeoRecord::SCALE}) should be <= 90 to be valid."
end
##
@@ -1084,10 +1084,10 @@ EOF
# check the bbox
changeset = Changeset.find(changeset_id)
- assert_equal 1*SCALE, changeset.min_lon, "min_lon should be 1 degree"
- assert_equal 2*SCALE, changeset.max_lon, "max_lon should be 2 degrees"
- assert_equal 1*SCALE, changeset.min_lat, "min_lat should be 1 degree"
- assert_equal 2*SCALE, changeset.max_lat, "max_lat should be 2 degrees"
+ assert_equal 1*GeoRecord::SCALE, changeset.min_lon, "min_lon should be 1 degree"
+ assert_equal 2*GeoRecord::SCALE, changeset.max_lon, "max_lon should be 2 degrees"
+ assert_equal 1*GeoRecord::SCALE, changeset.min_lat, "min_lat should be 1 degree"
+ assert_equal 2*GeoRecord::SCALE, changeset.max_lat, "max_lat should be 2 degrees"
end
##
@@ -1123,10 +1123,10 @@ EOF
# check the bbox
changeset = Changeset.find(changeset_id)
- assert_equal 1*SCALE, changeset.min_lon, "min_lon should be 1 degree"
- assert_equal 3*SCALE, changeset.max_lon, "max_lon should be 3 degrees"
- assert_equal 1*SCALE, changeset.min_lat, "min_lat should be 1 degree"
- assert_equal 3*SCALE, changeset.max_lat, "max_lat should be 3 degrees"
+ assert_equal 1*GeoRecord::SCALE, changeset.min_lon, "min_lon should be 1 degree"
+ assert_equal 3*GeoRecord::SCALE, changeset.max_lon, "max_lon should be 3 degrees"
+ assert_equal 1*GeoRecord::SCALE, changeset.min_lat, "min_lat should be 1 degree"
+ assert_equal 3*GeoRecord::SCALE, changeset.max_lat, "max_lat should be 3 degrees"
end
##
From 191af4a8b4bdd45c58917e34b545907b4e5df1b4 Mon Sep 17 00:00:00 2001
From: Tom Hughes
Date: Fri, 16 May 2014 22:39:53 +0100
Subject: [PATCH 22/39] Remove bogus sort that is implied by the intermate
association
---
app/models/way.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/models/way.rb b/app/models/way.rb
index 1da048c96..e78d0df0b 100644
--- a/app/models/way.rb
+++ b/app/models/way.rb
@@ -12,7 +12,7 @@ class Way < ActiveRecord::Base
has_many :old_ways, -> { order(:version) }
has_many :way_nodes, -> { order(:sequence_id) }
- has_many :nodes, -> { order("sequence_id") }, :through => :way_nodes
+ has_many :nodes, :through => :way_nodes
has_many :way_tags
From 2f6165e040dff4231922a4d631085b6591d3b746 Mon Sep 17 00:00:00 2001
From: John Firebaugh
Date: Wed, 21 May 2014 14:17:15 -0700
Subject: [PATCH 23/39] Update to iD v1.3.10
---
vendor/assets/iD/iD.css.erb | 594 ++--
vendor/assets/iD/iD.js | 1529 ++++++---
vendor/assets/iD/iD/img/maki-sprite.png | Bin 109414 -> 113751 bytes
vendor/assets/iD/iD/img/sprite.svg | 3935 +++++++++++------------
vendor/assets/iD/iD/locales/af.json | 6 -
vendor/assets/iD/iD/locales/ar.json | 8 -
vendor/assets/iD/iD/locales/ast.json | 489 ++-
vendor/assets/iD/iD/locales/bg-BG.json | 6 -
vendor/assets/iD/iD/locales/bn.json | 6 -
vendor/assets/iD/iD/locales/bs.json | 8 -
vendor/assets/iD/iD/locales/ca.json | 120 +-
vendor/assets/iD/iD/locales/cs.json | 8 -
vendor/assets/iD/iD/locales/da.json | 89 +-
vendor/assets/iD/iD/locales/de.json | 99 +-
vendor/assets/iD/iD/locales/el.json | 8 -
vendor/assets/iD/iD/locales/en.json | 77 +-
vendor/assets/iD/iD/locales/es.json | 335 +-
vendor/assets/iD/iD/locales/et.json | 7 +-
vendor/assets/iD/iD/locales/fa.json | 8 -
vendor/assets/iD/iD/locales/fi.json | 285 +-
vendor/assets/iD/iD/locales/fr.json | 272 +-
vendor/assets/iD/iD/locales/gl.json | 332 +-
vendor/assets/iD/iD/locales/hr.json | 16 +-
vendor/assets/iD/iD/locales/hu.json | 275 +-
vendor/assets/iD/iD/locales/id.json | 6 -
vendor/assets/iD/iD/locales/is.json | 227 +-
vendor/assets/iD/iD/locales/it.json | 99 +-
vendor/assets/iD/iD/locales/ja.json | 77 +-
vendor/assets/iD/iD/locales/ko.json | 67 +-
vendor/assets/iD/iD/locales/lt.json | 6 -
vendor/assets/iD/iD/locales/lv.json | 6 -
vendor/assets/iD/iD/locales/nl.json | 6 -
vendor/assets/iD/iD/locales/no.json | 6 -
vendor/assets/iD/iD/locales/pl.json | 188 +-
vendor/assets/iD/iD/locales/pt-BR.json | 779 ++++-
vendor/assets/iD/iD/locales/pt.json | 872 +++--
vendor/assets/iD/iD/locales/ro-RO.json | 3 -
vendor/assets/iD/iD/locales/ru.json | 43 +-
vendor/assets/iD/iD/locales/sk.json | 40 +-
vendor/assets/iD/iD/locales/sl.json | 7 -
vendor/assets/iD/iD/locales/sr.json | 77 +-
vendor/assets/iD/iD/locales/sv.json | 6 -
vendor/assets/iD/iD/locales/ta.json | 6 -
vendor/assets/iD/iD/locales/te.json | 3 -
vendor/assets/iD/iD/locales/tl.json | 544 ++++
vendor/assets/iD/iD/locales/tr.json | 6 -
vendor/assets/iD/iD/locales/uk.json | 22 +-
vendor/assets/iD/iD/locales/vi.json | 81 +-
vendor/assets/iD/iD/locales/yue.json | 8 -
vendor/assets/iD/iD/locales/zh-CN.json | 31 +-
vendor/assets/iD/iD/locales/zh-HK.json | 8 -
vendor/assets/iD/iD/locales/zh-TW.json | 6 -
vendor/assets/iD/iD/locales/zh.json | 6 -
53 files changed, 7888 insertions(+), 3860 deletions(-)
create mode 100644 vendor/assets/iD/iD/locales/tl.json
diff --git a/vendor/assets/iD/iD.css.erb b/vendor/assets/iD/iD.css.erb
index 0f5ae4158..585276f1e 100644
--- a/vendor/assets/iD/iD.css.erb
+++ b/vendor/assets/iD/iD.css.erb
@@ -321,111 +321,77 @@ path.shadow.selected {
stroke-opacity: 0.7;
}
-path.area.stroke {
- stroke: white;
- stroke-width: 1;
-}
-
-path.area.fill {
- fill:#fff;
- fill-opacity:0.3;
- fill-rule: evenodd;
-}
-
path.line.stroke {
stroke: white;
stroke-width: 2;
}
+path.area.stroke {
+ stroke: white;
+ stroke-width: 1;
+}
+path.area.fill {
+ fill: rgba(255, 255, 255, 0.3);
+ fill-rule: evenodd;
+}
+.preset-icon-fill-area {
+ border: 1px solid rgb(170, 170, 170);
+ background-color: rgba(170, 170, 170, 0.3);
+}
+
path.stroke.tag-natural {
- stroke: #b6e199;
+ stroke: rgb(182, 225, 153);
}
path.fill.tag-natural {
- fill: #b6e199;
+ fill: rgba(182, 225, 153, 0.3);
+}
+.preset-icon-fill-area.tag-natural {
+ border-color: rgb(182, 225, 153);
+ background-color: rgba(182, 225, 153, 0.3);
}
path.stroke.tag-natural-water {
- stroke: #77d3de;
+ stroke: rgb(119, 211, 222);
}
path.fill.tag-natural-water {
- fill: #77d3de;
+ fill: rgba(119, 211, 222, 0.3);
+}
+.preset-icon-fill-area.tag-natural-water {
+ border-color: rgb(119, 211, 222);
+ background-color: rgba(119, 211, 222, 0.3);
}
path.stroke.tag-amenity-school {
- stroke: #ffff94;
+ stroke: rgb(255, 255, 148);
}
path.fill.tag-amenity-school {
- fill: #ffff94;
- fill-opacity: 0.2;
+ fill: rgba(255, 255, 148, 0.2);
+}
+.preset-icon-fill-area.tag-amenity-school {
+ border-color: rgb(255, 255, 148);
+ background-color: rgba(255, 255, 148, 0.2);
}
path.stroke.tag-amenity-university {
- stroke: #ffff94;
+ stroke: rgb(255, 255, 148);
}
path.fill.tag-amenity-university {
- fill: #ffff94;
- fill-opacity: 0.1;
+ fill: rgba(255, 255, 148, 0.1);
}
-
-path.stroke.tag-building {
- stroke: #e06e5f;
+.preset-icon-fill-area.tag-amenity-university {
+ border-color: rgb(255, 255, 148);
+ background-color: rgba(255, 255, 148, 0.1);
}
-path.fill.tag-building {
- fill: #e06e5f;
-}
-
-/* Landuse */
-
path.stroke.tag-landuse,
path.stroke.tag-natural-wood,
path.stroke.tag-natural-tree,
path.stroke.tag-natural-grassland,
+path.stroke.tag-natural-grass,
path.stroke.tag-leisure-pitch,
path.stroke.tag-leisure-park {
- stroke: #8cd05f;
+ stroke: rgb(140, 208, 95);
}
-
-path.stroke.tag-landuse-retail,
-path.stroke.tag-landuse-commercial {
- stroke: #eab056;
-}
-
-path.stroke.tag-landuse-industrial {
- stroke: #e4a4f5;
-}
-
-path.stroke.tag-landuse-basin,
-path.stroke.tag-landuse-reservoir {
- stroke: #77d3de;
-}
-
-path.stroke.tag-landuse-quarry {
- stroke: #a6957b;
-}
-
-path.stroke.tag-landuse-landfill {
- stroke: #ff9933;
-}
-
-path.stroke.tag-landuse-residential,
-path.stroke.tag-landuse-construction {
- stroke: #e06e5f;
-}
-
-path.stroke.tag-landuse-meadow,
-path.stroke.tag-natural-wetland {
- stroke: #b6e199;
-}
-
-path.stroke.tag-natural-beach {
- stroke: #ffff7e;
-}
-
-path.stroke.tag-natural-scrub {
- stroke: #dbf08b;
-}
-
path.fill.tag-landuse,
path.fill.tag-natural-wood,
path.fill.tag-natural-tree,
@@ -433,134 +399,186 @@ path.fill.tag-natural-grassland,
path.fill.tag-natural-grass,
path.fill.tag-leisure-pitch,
path.fill.tag-leisure-park {
- fill: #8cd05f;
- fill-opacity: 0.2;
+ fill: rgba(140, 208, 95, 0.2);
+}
+.preset-icon-fill-area.tag-landuse,
+.preset-icon-fill-area.tag-natural-wood,
+.preset-icon-fill-area.tag-natural-tree,
+.preset-icon-fill-area.tag-natural-grassland,
+.preset-icon-fill-area.tag-natural-grass,
+.preset-icon-fill-area.tag-leisure-pitch,
+.preset-icon-fill-area.tag-leisure-park {
+ border-color: rgb(140, 208, 95);
+ background-color: rgba(140, 208, 95, 0.2);
}
+path.stroke.tag-landuse-residential {
+ stroke: rgb(224, 110, 95);
+}
+path.fill.tag-landuse-residential {
+ fill: rgba(224, 110, 95, 0.1);
+}
+.preset-icon-fill-area.tag-landuse-residential {
+ border-color: rgb(224, 110, 95);
+ background-color: rgba(224, 110, 95, 0.1);
+}
+
+path.stroke.tag-landuse-retail,
+path.stroke.tag-landuse-commercial {
+ stroke: rgb(234, 176, 86);
+}
path.fill.tag-landuse-retail,
-path.fill.tag-landuse-residential,
-path.fill.tag-landuse-commercial,
+path.fill.tag-landuse-commercial {
+ fill: rgba(234, 176, 86, 0.1);
+}
+.preset-icon-fill-area.tag-landuse-retail,
+.preset-icon-fill-area.tag-landuse-commercial {
+ border-color: rgb(234, 176, 86);
+ background-color: rgba(234, 176, 86, 0.1);
+}
+
+path.stroke.tag-landuse-industrial {
+ stroke: rgb(228, 164, 245);
+}
path.fill.tag-landuse-industrial {
- fill-opacity: 0.1;
+ fill: rgba(228, 164, 245, 0.1);
+}
+.preset-icon-fill-area.tag-landuse-industrial {
+ border-color: rgb(228, 164, 245);
+ background-color: rgba(228, 164, 245, 0.1);
}
-path.fill.tag-natural-wetland,
-path.fill.tag-natural-beach,
-path.fill.tag-natural-scrub,
-path.fill.tag-landuse-cemetery,
-path.fill.tag-landuse-meadow,
-path.fill.tag-landuse-farm,
-path.fill.tag-landuse-farmland,
-path.fill.tag-landuse-construction,
-path.fill.tag-landuse-orchard {
- /* background color is applied a further opacity later */
- fill-opacity: 0.8;
+path.stroke.tag-landuse-basin,
+path.stroke.tag-landuse-reservoir {
+ stroke: rgb(119, 211, 222);
}
-
-.pattern-color-beach,
-.pattern-color-scrub,
-.pattern-color-meadow,
-.pattern-color-wetland,
-.pattern-color-cemetery,
-.pattern-color-farm,
-.pattern-color-farmland,
-.pattern-color-construction,
-.pattern-color-orchard {
- fill-opacity: 0.2;
-}
-
path.fill.tag-landuse-basin,
path.fill.tag-landuse-reservoir {
- fill: #77d3de;
+ fill: rgba(119, 211, 222, 0.3);
+}
+.preset-icon-fill-area.tag-landuse-basin,
+.preset-icon-fill-area.tag-landuse-reservoir {
+ border-color: rgb(119, 211, 222);
+ background-color: rgba(119, 211, 222, 0.3);
}
+path.stroke.tag-landuse-quarry {
+ stroke: rgb(166, 149, 123);
+}
path.fill.tag-landuse-quarry {
- fill: #a6957b;
- fill-opacity: 0.2;
+ fill: rgba(166, 149, 123, 0.2);
+}
+.preset-icon-fill-area.tag-landuse-quarry {
+ border-color: rgb(166, 149, 123);
+ background-color: rgba(166, 149, 123, 0.2);
}
+path.stroke.tag-landuse-landfill {
+ stroke: rgb(255, 153, 51);
+}
path.fill.tag-landuse-landfill {
- fill: #ff8800;
- fill-opacity: 0.2;
+ fill: rgba(255, 153, 51, 0.2);
+}
+.preset-icon-fill-area.tag-landuse-landfill {
+ border-color: rgb(255, 153, 51);
+ background-color: rgba(255, 153, 51, 0.2);
}
-path.fill.tag-landuse-residential {
- fill: #e06e5f;
+path.stroke.tag-landuse-construction {
+ stroke: rgb(224, 110, 95);
+}
+.pattern-color-construction {
+ fill: rgba(224, 110, 95, 0.2);
+}
+.preset-icon-fill-area.tag-landuse-construction {
+ border-color: rgb(224, 110, 95);
+ background-color: rgba(224, 110, 95, 0.2);
}
-path.fill.tag-landuse-farm,
-path.fill.tag-landuse-farmland {
- fill: url(#pattern-farmland) #8cd05f;
+path.stroke.tag-landuse-military {
+ stroke: rgb(224, 110, 95);
+}
+.preset-icon-fill-area.tag-landuse-military {
+ border-color: rgb(224, 110, 95);
+ background-color: rgba(224, 110, 95, 0.2);
+}
+
+path.stroke.tag-natural-wetland {
+ stroke: rgb(182, 225, 153);
+}
+.pattern-color-wetland {
+ fill: rgba(182, 225, 153, 0.2);
+}
+.preset-icon-fill-area.tag-natural-wetland {
+ border-color: rgb(182, 225, 153);
+ background-color: rgba(182, 225, 153, 0.2);
+}
+
+path.stroke.tag-landuse-meadow {
+ stroke: rgb(182, 225, 153);
+}
+.pattern-color-meadow {
+ fill: rgba(182, 225, 153, 0.2);
+}
+.preset-icon-fill-area.tag-landuse-meadow {
+ border-color: rgb(182, 225, 153);
+ background-color: rgba(182, 225, 153, 0.2);
+}
+
+path.stroke.tag-natural-beach {
+ stroke: rgb(255, 255, 126);
+}
+.pattern-color-beach {
+ fill: rgba(255, 255, 126, 0.2);
+}
+.preset-icon-fill-area.tag-natural-beach {
+ border-color: rgb(255, 255, 126);
+ background-color: rgba(255, 255, 126, 0.2);
+}
+
+path.stroke.tag-natural-scrub {
+ stroke: rgb(219, 240, 139);
+}
+.pattern-color-scrub {
+ fill: rgba(219, 240, 139, 0.2);
+}
+.preset-icon-fill-area.tag-natural-scrub {
+ border-color: rgb(219, 240, 139);
+ background-color: rgba(219, 240, 139, 0.2);
}
.pattern-color-farm,
.pattern-color-farmland {
- fill: url(#pattern-farmland) #8cd05f;
+ fill: rgba(140, 208, 95, 0.2);
+}
+.preset-icon-fill-area.tag-landuse-farm,
+.preset-icon-fill-area.tag-landuse-farmland {
+ background-color: rgba(140, 208, 95, 0.2);
}
-path.fill.tag-landuse-meadow {
- fill: url(#pattern-meadow) #b6e199;
-}
-.pattern-color-meadow {
- fill: #b6e199;
-}
-
-path.fill.tag-natural-wetland {
- fill: url(#pattern-wetland) #b6e199;
-}
-.pattern-color-wetland {
- fill: #B6E199;
-}
-
-path.fill.tag-natural-beach {
- fill: url(#pattern-beach) #ffff7e;
-}
-.pattern-color-beach {
- fill: #ffff7e;
-}
-
-path.fill.tag-natural-scrub {
- fill: url(#pattern-scrub) #dbf08b;
-}
-.pattern-color-scrub {
- fill: #dbf08b;
-}
-
-path.fill.tag-landuse-cemetery {
- fill: url(#pattern-cemetery) #8cd05f;
-}
.pattern-color-cemetery {
- fill: #8cd05f
+ fill: rgba(140, 208, 95, 0.2)
+}
+.preset-icon-fill-area.tag-landuse-cemetery {
+ background-color: rgba(140, 208, 95, 0.2);
}
-path.fill.tag-landuse-orchard {
- fill: url(#pattern-orchard) #8cd05f;
-}
.pattern-color-orchard {
- fill: #8cd05f
+ fill: rgba(140, 208, 95, 0.2)
}
-
-path.fill.tag-landuse-construction {
- fill: url(#pattern-construction) #e06e5f;
-}
-.pattern-color-construction {
- fill: #e06e5f;
-}
-
-path.fill.tag-landuse-retail,
-path.fill.tag-landuse-commercial {
- fill: #eab056;
-}
-
-path.fill.tag-landuse-industrial {
- fill: #e4a4f5;
+.preset-icon-fill-area.tag-landuse-orchard {
+ background-color: rgba(140, 208, 95, 0.8);
}
path.stroke.tag-amenity-parking {
- stroke: #aaa;
+ stroke: rgb(170, 170, 170);
}
path.fill.tag-amenity-parking {
- fill: #aaa;
+ fill: rgba(170, 170, 170, 0.3);
+}
+.preset-icon-fill-area.tag-amenity-parking {
+ border-color: rgb(170, 170, 170);
+ background-color: rgba(170, 170, 170, 0.3);
}
path.fill.tag-place,
@@ -689,9 +707,6 @@ path.stroke.area.tag-highway-pedestrian {
stroke:#fff;
stroke-width: 2;
}
-path.fill.area.tag-highway-pedestrian {
- fill:#ccc;
-}
path.stroke.tag-highway-service {
stroke:#fff;
@@ -803,121 +818,66 @@ path.casing.tag-aeroway-runway {
stroke-linecap: square;
}
path.fill.tag-aeroway-runway {
- fill: #000;
- fill-opacity: 0.6;
+ fill: rgba(0, 0, 0, 0.6);
}
path.stroke.tag-aeroway-apron {
stroke: #805C80;
}
path.fill.tag-aeroway-apron {
- fill: #805C80;
- fill-opacity: 0.2;
+ fill: rgba(128, 92, 128, 0.2);
}
-/* bridges */
-
-path.casing.tag-bridge {
- stroke-width: 14;
- stroke-opacity: 0.5;
- stroke: #000;
-}
-
-path.casing.tag-highway-living_street.tag-bridge,
-path.casing.tag-highway-path.tag-bridge {
- stroke-width: 6;
-}
-
-path.casing.line.tag-highway-pedestrian,
-path.casing.tag-highway-service.tag-bridge,
-path.casing.tag-highway-track.tag-bridge,
-path.casing.tag-highway-steps.tag-bridge,
-path.casing.tag-highway-footway.tag-bridge,
-path.casing.tag-highway-cycleway.tag-bridge,
-path.casing.tag-highway-bridleway.tag-bridge {
- stroke-width: 8;
-}
-
-path.shadow.tag-highway-residential.tag-bridge {
- stroke-width:22;
-}
-
-path.shadow.tag-highway-living_street.tag-bridge,
-path.shadow.tag-highway-path.tag-bridge,
-path.shadow.line.tag-highway-pedestrian,
-path.shadow.tag-highway-service.tag-bridge,
-path.shadow.tag-highway-track.tag-bridge,
-path.shadow.tag-highway-steps.tag-bridge,
-path.shadow.tag-highway-footway.tag-bridge,
-path.shadow.tag-highway-cycleway.tag-bridge,
-path.shadow.tag-highway-bridleway.tag-bridge {
- stroke-width: 16;
-}
-
-/* tunnels */
-
-path.stroke.tag-highway.tag-tunnel {
- stroke-opacity: 0.3;
-}
-
-path.casing.tag-highway.tag-tunnel {
- stroke-opacity: 0.5;
-}
-
-path.stroke.tag-highway-construction,
-path.casing.tag-highway-construction {
- stroke-linecap: butt;
- stroke-dasharray: 7, 7;
-}
-
-/* construction */
-
-.low-zoom path.stroke.tag-highway-construction,
-.low-zoom path.casing.tag-highway-construction {
- stroke-linecap: butt;
- stroke-dasharray: 5, 5;
-}
-
/* railways */
-.line.stroke.tag-railway {
+path.stroke.tag-railway {
stroke: #eee;
stroke-width: 2;
stroke-linecap: butt;
stroke-dasharray: 12,12;
}
-.line.casing.tag-railway {
+
+path.casing.tag-railway {
stroke: #555;
stroke-width: 4;
}
-.line.stroke.tag-railway-abandoned {
+path.stroke.tag-railway-abandoned {
stroke: #eee;
}
-.line.casing.tag-railway-abandoned {
+path.casing.tag-railway-abandoned {
stroke: #999;
}
-.line.stroke.tag-railway-subway {
+path.stroke.tag-railway-subway {
stroke: #666;
}
-.line.casing.tag-railway-subway {
+path.casing.tag-railway-subway {
stroke: #222;
}
-.line.stroke.tag-railway-platform {
+path.stroke.tag-railway-platform {
stroke: #999;
stroke-width: 4;
stroke-dasharray: none;
}
-.line.casing.tag-railway-platform {
+path.casing.tag-railway-platform {
+ stroke: none;
+}
+
+.area.stroke.tag-railway {
+ stroke: white;
+ stroke-width: 1;
+ stroke-dasharray: none;
+}
+.area.casing.tag-railway {
stroke: none;
}
/* waterways */
path.fill.tag-waterway {
- fill: #77d3de;
+ fill: rgba(119, 211, 222, 0.3);
}
path.stroke.tag-waterway {
@@ -974,6 +934,96 @@ path.casing.tag-boundary-national_park {
}
+/* bridges */
+
+path.casing.tag-bridge {
+ stroke-width: 14;
+ stroke-opacity: 0.5;
+ stroke: #000;
+}
+
+path.casing.tag-highway-living_street.tag-bridge,
+path.casing.tag-highway-path.tag-bridge {
+ stroke-width: 6;
+}
+
+path.casing.line.tag-highway-pedestrian,
+path.casing.tag-highway-service.tag-bridge,
+path.casing.tag-highway-track.tag-bridge,
+path.casing.tag-highway-steps.tag-bridge,
+path.casing.tag-highway-footway.tag-bridge,
+path.casing.tag-highway-cycleway.tag-bridge,
+path.casing.tag-highway-bridleway.tag-bridge {
+ stroke-width: 8;
+}
+
+path.shadow.tag-highway-residential.tag-bridge {
+ stroke-width:22;
+}
+
+path.shadow.tag-highway-living_street.tag-bridge,
+path.shadow.tag-highway-path.tag-bridge,
+path.shadow.line.tag-highway-pedestrian,
+path.shadow.tag-highway-service.tag-bridge,
+path.shadow.tag-highway-track.tag-bridge,
+path.shadow.tag-highway-steps.tag-bridge,
+path.shadow.tag-highway-footway.tag-bridge,
+path.shadow.tag-highway-cycleway.tag-bridge,
+path.shadow.tag-highway-bridleway.tag-bridge {
+ stroke-width: 16;
+}
+
+/* tunnels */
+
+path.stroke.tag-tunnel {
+ stroke-opacity: 0.3;
+}
+
+path.casing.tag-tunnel {
+ stroke-opacity: 0.5;
+}
+
+/* embankments / cuttings */
+
+path.casing.tag-embankment,
+path.casing.tag-cutting {
+ stroke-opacity: 0.5;
+ stroke: #000;
+ stroke-width: 22;
+ stroke-dasharray: 2, 4;
+ stroke-linecap: butt;
+}
+
+path.shadow.tag-embankment,
+path.shadow.tag-cutting {
+ stroke-width: 28;
+}
+
+.low-zoom path.casing.tag-embankment,
+.low-zoom path.casing.tag-cutting {
+ stroke-width: 10;
+}
+
+.low-zoom path.shadow.tag-embankment,
+.low-zoom path.shadow.tag-cutting {
+ stroke-width: 14;
+}
+
+
+/* construction */
+
+path.stroke.tag-highway-construction,
+path.casing.tag-highway-construction {
+ stroke-linecap: butt;
+ stroke-dasharray: 7, 7;
+}
+
+.low-zoom path.stroke.tag-highway-construction,
+.low-zoom path.casing.tag-highway-construction {
+ stroke-linecap: butt;
+ stroke-dasharray: 5, 5;
+}
+
text {
font-size:10px;
pointer-events: none;
@@ -994,6 +1044,23 @@ path.oneway {
stroke-width: 6px;
}
+/* Buildings */
+
+path.stroke.tag-building,
+path.stroke.tag-amenity-shelter {
+ stroke: rgb(224, 110, 95);
+}
+path.fill.tag-building,
+path.fill.tag-amenity-shelter {
+ fill: rgba(224, 110, 95, 0.3);
+}
+.preset-icon-fill-area.tag-building,
+.preset-icon-fill-area.tag-amenity-shelter {
+ border-color: rgb(224, 110, 95);
+ background-color: rgba(224, 110, 95, 0.3);
+}
+
+
/*
* Labels
*/
@@ -2158,37 +2225,26 @@ a:hover .icon.out-link { background-position: -500px -14px;}
/* Preset icon colors */
-.preset-icon-fill.icon-area {
+.preset-icon-fill-area {
cursor: inherit;
- height: 45px;
- width: 45px;
+ height: 39px;
+ width: 39px;
margin: auto;
position: absolute;
- left: 7px; top: 7px;
- background:transparent url(<%= asset_path("iD/img/sprite.svg") %>) no-repeat -240px -80px;
+ left: 10px;
+ top: 10px;
}
-.preset-icon-fill.tag-shop,
-.preset-icon-fill.tag-building {
+.preset-icon-fill-area:after {
+ content: '';
+ left: -4px;
+ top: -4px;
+ height: 45px;
+ width: 45px;
+ position: absolute;
background:transparent url(<%= asset_path("iD/img/sprite.svg") %>) no-repeat 0 -80px;
}
-.preset-icon-fill.tag-natural-water {
- background:transparent url(<%= asset_path("iD/img/sprite.svg") %>) no-repeat -60px -80px;
-}
-
-.preset-icon-fill.tag-landuse,
-.preset-icon-fill.tag-natural-wood,
-.preset-icon-fill.tag-natural-tree,
-.preset-icon-fill.tag-natural-grassland,
-.preset-icon-fill.tag-leisure-park {
- background:transparent url(<%= asset_path("iD/img/sprite.svg") %>) no-repeat -120px -80px;
-}
-
-.preset-icon-fill.tag-amenity-parking {
- background:transparent url(<%= asset_path("iD/img/sprite.svg") %>) no-repeat -180px -80px;
-}
-
/* preset form basics */
.inspector-preset {
@@ -4253,6 +4309,10 @@ img.wiki-image {
.feature-laundry{background-position:-108px -504px;}
.feature-car{background-position:-162px -504px;}
.feature-suitcase{background-position:-216px -504px;}
+.feature-hairdresser{background-position:-0px -528px;}
+.feature-chemist{background-position:-54px -528px;}
+.feature-mobilephone{background-position:-108px -528px;}
+.feature-scooter{background-position:-162px -528px;}
.preset-icon-line.feature-highway-motorway{background-position:-20px -25px;}
.preset-icon-line.feature-highway-trunk{background-position:-80px -25px;}
.preset-icon-line.feature-highway-primary{background-position:-140px -25px;}
diff --git a/vendor/assets/iD/iD.js b/vendor/assets/iD/iD.js
index 8ffa66d17..e71d24583 100644
--- a/vendor/assets/iD/iD.js
+++ b/vendor/assets/iD/iD.js
@@ -174,11 +174,13 @@
}
})(this);
-d3 = (function(){
- var d3 = {version: "3.3.10"}; // semver
-d3.ascending = function(a, b) {
+!function(){
+ var d3 = {version: "3.4.6"}; // semver
+d3.ascending = d3_ascending;
+
+function d3_ascending(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
-};
+}
d3.descending = function(a, b) {
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
};
@@ -250,17 +252,17 @@ function d3_number(x) {
}
d3.mean = function(array, f) {
- var n = array.length,
+ var s = 0,
+ n = array.length,
a,
- m = 0,
i = -1,
- j = 0;
+ j = n;
if (arguments.length === 1) {
- while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j;
+ while (++i < n) if (d3_number(a = array[i])) s += a; else --j;
} else {
- while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j;
+ while (++i < n) if (d3_number(a = f.call(array, array[i], i))) s += a; else --j;
}
- return j ? m : undefined;
+ return j ? s / j : undefined;
};
// R-7 per
d3.quantile = function(values, p) {
@@ -274,16 +276,17 @@ d3.quantile = function(values, p) {
d3.median = function(array, f) {
if (arguments.length > 1) array = array.map(f);
array = array.filter(d3_number);
- return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined;
+ return array.length ? d3.quantile(array.sort(d3_ascending), .5) : undefined;
};
-d3.bisector = function(f) {
+
+function d3_bisector(compare) {
return {
left: function(a, x, lo, hi) {
if (arguments.length < 3) lo = 0;
if (arguments.length < 4) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
- if (f.call(a, a[mid], mid) < x) lo = mid + 1;
+ if (compare(a[mid], x) < 0) lo = mid + 1;
else hi = mid;
}
return lo;
@@ -293,17 +296,23 @@ d3.bisector = function(f) {
if (arguments.length < 4) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
- if (x < f.call(a, a[mid], mid)) hi = mid;
+ if (compare(a[mid], x) > 0) hi = mid;
else lo = mid + 1;
}
return lo;
}
};
-};
+}
-var d3_bisector = d3.bisector(function(d) { return d; });
-d3.bisectLeft = d3_bisector.left;
-d3.bisect = d3.bisectRight = d3_bisector.right;
+var d3_bisect = d3_bisector(d3_ascending);
+d3.bisectLeft = d3_bisect.left;
+d3.bisect = d3.bisectRight = d3_bisect.right;
+
+d3.bisector = function(f) {
+ return d3_bisector(f.length === 1
+ ? function(d, x) { return d3_ascending(f(d), x); }
+ : f);
+};
d3.shuffle = function(array) {
var m = array.length, t, i;
while (m) {
@@ -425,24 +434,15 @@ d3.map = function(object) {
function d3_Map() {}
d3_class(d3_Map, {
- has: function(key) {
- return d3_map_prefix + key in this;
- },
+ has: d3_map_has,
get: function(key) {
return this[d3_map_prefix + key];
},
set: function(key, value) {
return this[d3_map_prefix + key] = value;
},
- remove: function(key) {
- key = d3_map_prefix + key;
- return key in this && delete this[key];
- },
- keys: function() {
- var keys = [];
- this.forEach(function(key) { keys.push(key); });
- return keys;
- },
+ remove: d3_map_remove,
+ keys: d3_map_keys,
values: function() {
var values = [];
this.forEach(function(key, value) { values.push(value); });
@@ -453,18 +453,42 @@ d3_class(d3_Map, {
this.forEach(function(key, value) { entries.push({key: key, value: value}); });
return entries;
},
+ size: d3_map_size,
+ empty: d3_map_empty,
forEach: function(f) {
- for (var key in this) {
- if (key.charCodeAt(0) === d3_map_prefixCode) {
- f.call(this, key.substring(1), this[key]);
- }
- }
+ for (var key in this) if (key.charCodeAt(0) === d3_map_prefixCode) f.call(this, key.substring(1), this[key]);
}
});
var d3_map_prefix = "\0", // prevent collision with built-ins
d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
+function d3_map_has(key) {
+ return d3_map_prefix + key in this;
+}
+
+function d3_map_remove(key) {
+ key = d3_map_prefix + key;
+ return key in this && delete this[key];
+}
+
+function d3_map_keys() {
+ var keys = [];
+ this.forEach(function(key) { keys.push(key); });
+ return keys;
+}
+
+function d3_map_size() {
+ var size = 0;
+ for (var key in this) if (key.charCodeAt(0) === d3_map_prefixCode) ++size;
+ return size;
+}
+
+function d3_map_empty() {
+ for (var key in this) if (key.charCodeAt(0) === d3_map_prefixCode) return false;
+ return true;
+}
+
d3.nest = function() {
var nest = {},
keys = [],
@@ -570,9 +594,7 @@ d3.set = function(array) {
function d3_Set() {}
d3_class(d3_Set, {
- has: function(value) {
- return d3_map_prefix + value in this;
- },
+ has: d3_map_has,
add: function(value) {
this[d3_map_prefix + value] = true;
return value;
@@ -581,19 +603,11 @@ d3_class(d3_Set, {
value = d3_map_prefix + value;
return value in this && delete this[value];
},
- values: function() {
- var values = [];
- this.forEach(function(value) {
- values.push(value);
- });
- return values;
- },
+ values: d3_map_keys,
+ size: d3_map_size,
+ empty: d3_map_empty,
forEach: function(f) {
- for (var value in this) {
- if (value.charCodeAt(0) === d3_map_prefixCode) {
- f.call(this, value.substring(1));
- }
- }
+ for (var value in this) if (value.charCodeAt(0) === d3_map_prefixCode) f.call(this, value.substring(1));
}
});
d3.behavior = {};
@@ -794,7 +808,7 @@ var d3_select = function(s, n) { return n.querySelector(s); },
// Prefer Sizzle, if available.
if (typeof Sizzle === "function") {
d3_select = function(s, n) { return Sizzle(s, n)[0] || null; };
- d3_selectAll = function(s, n) { return Sizzle.uniqueSort(Sizzle(s, n)); };
+ d3_selectAll = Sizzle;
d3_selectMatches = Sizzle.matchesSelector;
}
@@ -954,7 +968,7 @@ d3_selectionPrototype.classed = function(name, value) {
// probably doesn't support it on SVG elements (which can be animated).
if (typeof name === "string") {
var node = this.node(),
- n = (name = name.trim().split(/^|\s+/g)).length,
+ n = (name = d3_selection_classes(name)).length,
i = -1;
if (value = node.classList) {
while (++i < n) if (!value.contains(name[i])) return false;
@@ -979,9 +993,13 @@ function d3_selection_classedRe(name) {
return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
}
+function d3_selection_classes(name) {
+ return name.trim().split(/^|\s+/);
+}
+
// Multiple class names are allowed (e.g., "foo bar").
function d3_selection_classed(name, value) {
- name = name.trim().split(/\s+/).map(d3_selection_classedName);
+ name = d3_selection_classes(name).map(d3_selection_classedName);
var n = name.length;
function classedConstant() {
@@ -1328,7 +1346,7 @@ d3_selectionPrototype.sort = function(comparator) {
};
function d3_selection_sortComparator(comparator) {
- if (!arguments.length) comparator = d3.ascending;
+ if (!arguments.length) comparator = d3_ascending;
return function(a, b) {
return a && b ? comparator(a.__data__, b.__data__) : !a - !b;
};
@@ -1608,29 +1626,12 @@ d3.mouse = function(container) {
return d3_mousePoint(container, d3_eventSource());
};
-// https://bugs.webkit.org/show_bug.cgi?id=44083
-var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0;
-
function d3_mousePoint(container, e) {
if (e.changedTouches) e = e.changedTouches[0];
var svg = container.ownerSVGElement || container;
if (svg.createSVGPoint) {
var point = svg.createSVGPoint();
- if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) {
- svg = d3.select("body").append("svg").style({
- position: "absolute",
- top: 0,
- left: 0,
- margin: 0,
- padding: 0,
- border: "none"
- }, "important");
- var ctm = svg[0][0].getScreenCTM();
- d3_mouse_bug44083 = !(ctm.f || ctm.e);
- svg.remove();
- }
- if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY;
- else point.x = e.clientX, point.y = e.clientY;
+ point.x = e.clientX, point.y = e.clientY;
point = point.matrixTransform(container.getScreenCTM().inverse());
return [point.x, point.y];
}
@@ -1658,6 +1659,14 @@ function d3_sgn(x) {
return x > 0 ? 1 : x < 0 ? -1 : 0;
}
+// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of
+// the 3D cross product in a quadrant I Cartesian coordinate system (+x is
+// right, +y is up). Returns a positive value if ABC is counter-clockwise,
+// negative if clockwise, and zero if the points are collinear.
+function d3_cross2d(a, b, c) {
+ return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
+}
+
function d3_acos(x) {
return x > 1 ? 0 : x < -1 ? π : Math.acos(x);
}
@@ -1756,37 +1765,37 @@ d3.behavior.zoom = function() {
zoom.event = function(g) {
g.each(function() {
- var event_ = event.of(this, arguments),
+ var dispatch = event.of(this, arguments),
view1 = view;
if (d3_transitionInheritId) {
- d3.select(this).transition()
- .each("start.zoom", function() {
- view = this.__chart__ || {x: 0, y: 0, k: 1}; // pre-transition state
- zoomstarted(event_);
- })
- .tween("zoom:zoom", function() {
- var dx = size[0],
- dy = size[1],
- cx = dx / 2,
- cy = dy / 2,
- i = d3.interpolateZoom(
- [(cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k],
- [(cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k]
- );
- return function(t) {
- var l = i(t), k = dx / l[2];
- this.__chart__ = view = {x: cx - l[0] * k, y: cy - l[1] * k, k: k};
- zoomed(event_);
- };
- })
- .each("end.zoom", function() {
- zoomended(event_);
- });
+ d3.select(this).transition()
+ .each("start.zoom", function() {
+ view = this.__chart__ || {x: 0, y: 0, k: 1}; // pre-transition state
+ zoomstarted(dispatch);
+ })
+ .tween("zoom:zoom", function() {
+ var dx = size[0],
+ dy = size[1],
+ cx = dx / 2,
+ cy = dy / 2,
+ i = d3.interpolateZoom(
+ [(cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k],
+ [(cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k]
+ );
+ return function(t) {
+ var l = i(t), k = dx / l[2];
+ this.__chart__ = view = {x: cx - l[0] * k, y: cy - l[1] * k, k: k};
+ zoomed(dispatch);
+ };
+ })
+ .each("end.zoom", function() {
+ zoomended(dispatch);
+ });
} else {
this.__chart__ = view;
- zoomstarted(event_);
- zoomed(event_);
- zoomended(event_);
+ zoomstarted(dispatch);
+ zoomed(dispatch);
+ zoomended(dispatch);
}
});
}
@@ -1862,65 +1871,65 @@ d3.behavior.zoom = function() {
if (y1) y1.domain(y0.range().map(function(y) { return (y - view.y) / view.k; }).map(y0.invert));
}
- function zoomstarted(event) {
- event({type: "zoomstart"});
+ function zoomstarted(dispatch) {
+ dispatch({type: "zoomstart"});
}
- function zoomed(event) {
+ function zoomed(dispatch) {
rescale();
- event({type: "zoom", scale: view.k, translate: [view.x, view.y]});
+ dispatch({type: "zoom", scale: view.k, translate: [view.x, view.y]});
}
- function zoomended(event) {
- event({type: "zoomend"});
+ function zoomended(dispatch) {
+ dispatch({type: "zoomend"});
}
function mousedowned() {
- var target = this,
- event_ = event.of(target, arguments),
- eventTarget = d3.event.target,
+ var that = this,
+ target = d3.event.target,
+ dispatch = event.of(that, arguments),
dragged = 0,
- w = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended),
- l = location(d3.mouse(target)),
+ subject = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended),
+ location0 = location(d3.mouse(that)),
dragRestore = d3_event_dragSuppress();
- d3_selection_interrupt.call(target);
- zoomstarted(event_);
+ d3_selection_interrupt.call(that);
+ zoomstarted(dispatch);
function moved() {
dragged = 1;
- translateTo(d3.mouse(target), l);
- zoomed(event_);
+ translateTo(d3.mouse(that), location0);
+ zoomed(dispatch);
}
function ended() {
- w.on(mousemove, d3_window === target ? mousewheelreset : null).on(mouseup, null);
- dragRestore(dragged && d3.event.target === eventTarget);
- zoomended(event_);
+ subject.on(mousemove, d3_window === that ? mousewheelreset : null).on(mouseup, null);
+ dragRestore(dragged && d3.event.target === target);
+ zoomended(dispatch);
}
}
// These closures persist for as long as at least one touch is active.
function touchstarted() {
- var target = this,
- event_ = event.of(target, arguments),
+ var that = this,
+ dispatch = event.of(that, arguments),
locations0 = {}, // touchstart locations
distance0 = 0, // distance² between initial touches
scale0, // scale when we started touching
- eventId = d3.event.changedTouches[0].identifier,
- touchmove = "touchmove.zoom-" + eventId,
- touchend = "touchend.zoom-" + eventId,
- w = d3.select(d3_window).on(touchmove, moved).on(touchend, ended),
- t = d3.select(target).on(mousedown, null).on(touchstart, started), // prevent duplicate events
+ zoomName = ".zoom-" + d3.event.changedTouches[0].identifier,
+ touchmove = "touchmove" + zoomName,
+ touchend = "touchend" + zoomName,
+ target = d3.select(d3.event.target).on(touchmove, moved).on(touchend, ended),
+ subject = d3.select(that).on(mousedown, null).on(touchstart, started), // prevent duplicate events
dragRestore = d3_event_dragSuppress();
- d3_selection_interrupt.call(target);
+ d3_selection_interrupt.call(that);
started();
- zoomstarted(event_);
+ zoomstarted(dispatch);
// Updates locations of any touches in locations0.
function relocate() {
- var touches = d3.touches(target);
+ var touches = d3.touches(that);
scale0 = view.k;
touches.forEach(function(t) {
if (t.identifier in locations0) locations0[t.identifier] = location(t);
@@ -1945,7 +1954,7 @@ d3.behavior.zoom = function() {
scaleTo(view.k * 2);
translateTo(p, l);
d3_eventPreventDefault();
- zoomed(event_);
+ zoomed(dispatch);
}
touchtime = now;
} else if (touches.length > 1) {
@@ -1956,7 +1965,7 @@ d3.behavior.zoom = function() {
}
function moved() {
- var touches = d3.touches(target),
+ var touches = d3.touches(that),
p0, l0,
p1, l1;
for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {
@@ -1977,7 +1986,7 @@ d3.behavior.zoom = function() {
touchtime = null;
translateTo(p0, l0);
- zoomed(event_);
+ zoomed(dispatch);
}
function ended() {
@@ -1995,24 +2004,24 @@ d3.behavior.zoom = function() {
}
}
// Otherwise, remove touchmove and touchend listeners.
- w.on(touchmove, null).on(touchend, null);
- t.on(mousedown, mousedowned).on(touchstart, touchstarted);
+ target.on(zoomName, null);
+ subject.on(mousedown, mousedowned).on(touchstart, touchstarted);
dragRestore();
- zoomended(event_);
+ zoomended(dispatch);
}
}
function mousewheeled() {
- var event_ = event.of(this, arguments);
+ var dispatch = event.of(this, arguments);
if (mousewheelTimer) clearTimeout(mousewheelTimer);
- else d3_selection_interrupt.call(this), zoomstarted(event_);
- mousewheelTimer = setTimeout(function() { mousewheelTimer = null; zoomended(event_); }, 50);
+ else d3_selection_interrupt.call(this), zoomstarted(dispatch);
+ mousewheelTimer = setTimeout(function() { mousewheelTimer = null; zoomended(dispatch); }, 50);
d3_eventPreventDefault();
var point = center || d3.mouse(this);
if (!translate0) translate0 = location(point);
scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);
translateTo(point, translate0);
- zoomed(event_);
+ zoomed(dispatch);
}
function mousewheelreset() {
@@ -2020,15 +2029,15 @@ d3.behavior.zoom = function() {
}
function dblclicked() {
- var event_ = event.of(this, arguments),
+ var dispatch = event.of(this, arguments),
p = d3.mouse(this),
l = location(p),
k = Math.log(view.k) / Math.LN2;
- zoomstarted(event_);
+ zoomstarted(dispatch);
scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1));
translateTo(p, l);
- zoomed(event_);
- zoomended(event_);
+ zoomed(dispatch);
+ zoomended(dispatch);
}
return d3.rebind(zoom, event, "on");
@@ -2047,6 +2056,15 @@ function d3_functor(v) {
d3.functor = d3_functor;
+d3.touch = function(container, touches, identifier) {
+ if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;
+ if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {
+ if ((touch = touches[i]).identifier === identifier) {
+ return d3_mousePoint(container, touch);
+ }
+ }
+};
+
var d3_timer_queueHead,
d3_timer_queueTail,
d3_timer_interval, // is an interval (or frame) active?
@@ -2257,7 +2275,6 @@ function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
clip.lineEnd = ringEnd;
segments = [];
polygon = [];
- listener.polygonStart();
},
polygonEnd: function() {
clip.point = point;
@@ -2267,13 +2284,15 @@ function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
segments = d3.merge(segments);
var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);
if (segments.length) {
+ if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);
} else if (clipStartInside) {
+ if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
}
- listener.polygonEnd();
+ if (polygonStarted) listener.polygonEnd(), polygonStarted = false;
segments = polygon = null;
},
sphere: function() {
@@ -2300,6 +2319,7 @@ function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
var buffer = d3_geo_clipBufferListener(),
ringListener = clipLine(buffer),
+ polygonStarted = false,
polygon,
ring;
@@ -2335,9 +2355,12 @@ function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
var n = segment.length - 1,
i = -1,
point;
- listener.lineStart();
- while (++i < n) listener.point((point = segment[i])[0], point[1]);
- listener.lineEnd();
+ if (n > 0) {
+ if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
+ listener.lineStart();
+ while (++i < n) listener.point((point = segment[i])[0], point[1]);
+ listener.lineEnd();
+ }
return;
}
@@ -2531,11 +2554,13 @@ function d3_geo_areaRingStart() {
// previous point, current point. Uses a formula derived from Cagnoli’s
// theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
var dλ = λ - λ0,
+ sdλ = dλ >= 0 ? 1 : -1,
+ adλ = sdλ * dλ,
cosφ = Math.cos(φ),
sinφ = Math.sin(φ),
k = sinφ0 * sinφ,
- u = cosφ0 * cosφ + k * Math.cos(dλ),
- v = k * Math.sin(dλ);
+ u = cosφ0 * cosφ + k * Math.cos(adλ),
+ v = k * sdλ * Math.sin(adλ);
d3_geo_areaRingSum.add(Math.atan2(v, u));
// Advance the previous points.
@@ -2622,11 +2647,13 @@ function d3_geo_pointInPolygon(point, polygon) {
sinφ = Math.sin(φ),
cosφ = Math.cos(φ),
dλ = λ - λ0,
- antimeridian = abs(dλ) > π,
+ sdλ = dλ >= 0 ? 1 : -1,
+ adλ = sdλ * dλ,
+ antimeridian = adλ > π,
k = sinφ0 * sinφ;
- d3_geo_areaRingSum.add(Math.atan2(k * Math.sin(dλ), cosφ0 * cosφ + k * Math.cos(dλ)));
+ d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));
- polarAngle += antimeridian ? dλ + (dλ >= 0 ? τ : -τ): dλ;
+ polarAngle += antimeridian ? dλ + sdλ * τ : dλ;
// Are the longitudes either side of the point's meridian, and are the
// latitudes smaller than the parallel?
@@ -3218,9 +3245,9 @@ function d3_geo_clipExtent(x0, y0, x1, y1) {
for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {
b = v[j];
if (a[1] <= y) {
- if (b[1] > y && isLeft(a, b, p) > 0) ++wn;
+ if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;
} else {
- if (b[1] <= y && isLeft(a, b, p) < 0) --wn;
+ if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;
}
a = b;
}
@@ -3228,10 +3255,6 @@ function d3_geo_clipExtent(x0, y0, x1, y1) {
return wn !== 0;
}
- function isLeft(a, b, c) {
- return (b[0] - a[0]) * (c[1] - a[1]) - (c[0] - a[0]) * (b[1] - a[1]);
- }
-
function interpolate(from, to, direction, listener) {
var a = 0, a1 = 0;
if (from == null ||
@@ -4546,6 +4569,131 @@ function d3_geom_polygonClosed(coordinates) {
b = coordinates[coordinates.length - 1];
return !(a[0] - b[0] || a[1] - b[1]);
}
+function d3_geom_pointX(d) {
+ return d[0];
+}
+
+function d3_geom_pointY(d) {
+ return d[1];
+}
+
+/**
+ * Computes the 2D convex hull of a set of points using Graham's scanning
+ * algorithm. The algorithm has been implemented as described in Cormen,
+ * Leiserson, and Rivest's Introduction to Algorithms. The running time of
+ * this algorithm is O(n log n), where n is the number of input points.
+ *
+ * @param vertices [[x1, y1], [x2, y2], …]
+ * @returns polygon [[x1, y1], [x2, y2], …]
+ */
+d3.geom.hull = function(vertices) {
+ var x = d3_geom_pointX,
+ y = d3_geom_pointY;
+
+ if (arguments.length) return hull(vertices);
+
+ function hull(data) {
+ if (data.length < 3) return [];
+
+ var fx = d3_functor(x),
+ fy = d3_functor(y),
+ n = data.length,
+ vertices, // TODO use parallel arrays
+ plen = n - 1,
+ points = [],
+ stack = [],
+ d,
+ i, j, h = 0, x1, y1, x2, y2, u, v, a, sp;
+
+ if (fx === d3_geom_pointX && y === d3_geom_pointY) vertices = data;
+ else for (i = 0, vertices = []; i < n; ++i) {
+ vertices.push([+fx.call(this, d = data[i], i), +fy.call(this, d, i)]);
+ }
+
+ // find the starting ref point: leftmost point with the minimum y coord
+ for (i = 1; i < n; ++i) {
+ if (vertices[i][1] < vertices[h][1]
+ || vertices[i][1] == vertices[h][1]
+ && vertices[i][0] < vertices[h][0]) h = i;
+ }
+
+ // calculate polar angles from ref point and sort
+ for (i = 0; i < n; ++i) {
+ if (i === h) continue;
+ y1 = vertices[i][1] - vertices[h][1];
+ x1 = vertices[i][0] - vertices[h][0];
+ points.push({angle: Math.atan2(y1, x1), index: i});
+ }
+ points.sort(function(a, b) { return a.angle - b.angle; });
+
+ // toss out duplicate angles
+ a = points[0].angle;
+ v = points[0].index;
+ u = 0;
+ for (i = 1; i < plen; ++i) {
+ j = points[i].index;
+ if (a == points[i].angle) {
+ // keep angle for point most distant from the reference
+ x1 = vertices[v][0] - vertices[h][0];
+ y1 = vertices[v][1] - vertices[h][1];
+ x2 = vertices[j][0] - vertices[h][0];
+ y2 = vertices[j][1] - vertices[h][1];
+ if (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) {
+ points[i].index = -1;
+ continue;
+ } else {
+ points[u].index = -1;
+ }
+ }
+ a = points[i].angle;
+ u = i;
+ v = j;
+ }
+
+ // initialize the stack
+ stack.push(h);
+ for (i = 0, j = 0; i < 2; ++j) {
+ if (points[j].index > -1) {
+ stack.push(points[j].index);
+ i++;
+ }
+ }
+ sp = stack.length;
+
+ // do graham's scan
+ for (; j < plen; ++j) {
+ if (points[j].index < 0) continue; // skip tossed out points
+ while (!d3_geom_hullCCW(stack[sp - 2], stack[sp - 1], points[j].index, vertices)) {
+ --sp;
+ }
+ stack[sp++] = points[j].index;
+ }
+
+ // construct the hull
+ var poly = [];
+ for (i = sp - 1; i >= 0; --i) poly.push(data[stack[i]]);
+ return poly;
+ }
+
+ hull.x = function(_) {
+ return arguments.length ? (x = _, hull) : x;
+ };
+
+ hull.y = function(_) {
+ return arguments.length ? (y = _, hull) : y;
+ };
+
+ return hull;
+};
+
+// are three points in counter-clockwise order?
+function d3_geom_hullCCW(i1, i2, i3, v) {
+ var t, a, b, c, d, e, f;
+ t = v[i1]; a = t[0]; b = t[1];
+ t = v[i2]; c = t[0]; d = t[1];
+ t = v[i3]; e = t[0]; f = t[1];
+ return (f - b) * (c - a) - (d - b) * (e - a) > 0;
+}
var d3_ease_default = function() { return d3_identity; };
@@ -4995,7 +5143,7 @@ function d3_rgb_parse(format, rgb, hsl) {
b = 0, // blue channel; int in [0, 255]
m1, // CSS color specification match
m2, // CSS color specification type (e.g., rgb)
- name;
+ color;
/* Handle hsl, rgb. */
m1 = /([a-z]+)\((.*)\)/i.exec(format);
@@ -5020,22 +5168,19 @@ function d3_rgb_parse(format, rgb, hsl) {
}
/* Named colors. */
- if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b);
+ if (color = d3_rgb_names.get(format)) return rgb(color.r, color.g, color.b);
/* Hexadecimal colors: #rgb and #rrggbb. */
- if (format != null && format.charAt(0) === "#") {
+ if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.substring(1), 16))) {
if (format.length === 4) {
- r = format.charAt(1); r += r;
- g = format.charAt(2); g += g;
- b = format.charAt(3); b += b;
+ r = (color & 0xf00) >> 4; r = (r >> 4) | r;
+ g = (color & 0xf0); g = (g >> 4) | g;
+ b = (color & 0xf); b = (b << 4) | b;
} else if (format.length === 7) {
- r = format.substring(1, 3);
- g = format.substring(3, 5);
- b = format.substring(5, 7);
+ r = (color & 0xff0000) >> 16;
+ g = (color & 0xff00) >> 8;
+ b = (color & 0xff);
}
- r = parseInt(r, 16);
- g = parseInt(g, 16);
- b = parseInt(b, 16);
}
return rgb(r, g, b);
@@ -5304,89 +5449,55 @@ function d3_interpolateNumber(a, b) {
d3.interpolateString = d3_interpolateString;
function d3_interpolateString(a, b) {
- var m, // current match
- i, // current index
- j, // current index (for coalescing)
- s0 = 0, // start index of current string prefix
- s1 = 0, // end index of current string prefix
+ var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, // scan index for next number in b
+ am, // current match in a
+ bm, // current match in b
+ bs, // string preceding current number in b, if any
+ i = -1, // index in s
s = [], // string constants and placeholders
- q = [], // number interpolators
- n, // q.length
- o;
+ q = []; // number interpolators
// Coerce inputs to strings.
a = a + "", b = b + "";
- // Reset our regular expression!
- d3_interpolate_number.lastIndex = 0;
-
- // Find all numbers in b.
- for (i = 0; m = d3_interpolate_number.exec(b); ++i) {
- if (m.index) s.push(b.substring(s0, s1 = m.index));
- q.push({i: s.length, x: m[0]});
- s.push(null);
- s0 = d3_interpolate_number.lastIndex;
- }
- if (s0 < b.length) s.push(b.substring(s0));
-
- // Find all numbers in a.
- for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) {
- o = q[i];
- if (o.x == m[0]) { // The numbers match, so coalesce.
- if (o.i) {
- if (s[o.i + 1] == null) { // This match is followed by another number.
- s[o.i - 1] += o.x;
- s.splice(o.i, 1);
- for (j = i + 1; j < n; ++j) q[j].i--;
- } else { // This match is followed by a string, so coalesce twice.
- s[o.i - 1] += o.x + s[o.i + 1];
- s.splice(o.i, 2);
- for (j = i + 1; j < n; ++j) q[j].i -= 2;
- }
- } else {
- if (s[o.i + 1] == null) { // This match is followed by another number.
- s[o.i] = o.x;
- } else { // This match is followed by a string, so coalesce twice.
- s[o.i] = o.x + s[o.i + 1];
- s.splice(o.i + 1, 1);
- for (j = i + 1; j < n; ++j) q[j].i--;
- }
- }
- q.splice(i, 1);
- n--;
- i--;
- } else {
- o.x = d3_interpolateNumber(parseFloat(m[0]), parseFloat(o.x));
+ // Interpolate pairs of numbers in a & b.
+ while ((am = d3_interpolate_numberA.exec(a))
+ && (bm = d3_interpolate_numberB.exec(b))) {
+ if ((bs = bm.index) > bi) { // a string precedes the next number in b
+ bs = b.substring(bi, bs);
+ if (s[i]) s[i] += bs; // coalesce with previous string
+ else s[++i] = bs;
}
+ if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
+ if (s[i]) s[i] += bm; // coalesce with previous string
+ else s[++i] = bm;
+ } else { // interpolate non-matching numbers
+ s[++i] = null;
+ q.push({i: i, x: d3_interpolateNumber(am, bm)});
+ }
+ bi = d3_interpolate_numberB.lastIndex;
}
- // Remove any numbers in b not found in a.
- while (i < n) {
- o = q.pop();
- if (s[o.i + 1] == null) { // This match is followed by another number.
- s[o.i] = o.x;
- } else { // This match is followed by a string, so coalesce twice.
- s[o.i] = o.x + s[o.i + 1];
- s.splice(o.i + 1, 1);
- }
- n--;
+ // Add remains of b.
+ if (bi < b.length) {
+ bs = b.substring(bi);
+ if (s[i]) s[i] += bs; // coalesce with previous string
+ else s[++i] = bs;
}
// Special optimization for only a single match.
- if (s.length === 1) {
- return s[0] == null
- ? (o = q[0].x, function(t) { return o(t) + ""; })
- : function() { return b; };
- }
-
// Otherwise, interpolate each of the numbers and rejoin the string.
- return function(t) {
- for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t);
- return s.join("");
- };
+ return s.length < 2
+ ? (q[0] ? (b = q[0].x, function(t) { return b(t) + ""; })
+ : function() { return b; })
+ : (b = q.length, function(t) {
+ for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
+ return s.join("");
+ });
}
-var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
+var d3_interpolate_numberA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
+ d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, "g");
d3.interpolate = d3_interpolate;
@@ -5401,7 +5512,8 @@ d3.interpolators = [
var t = typeof b;
return (t === "string" ? (d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString)
: b instanceof d3_Color ? d3_interpolateRgb
- : t === "object" ? (Array.isArray(b) ? d3_interpolateArray : d3_interpolateObject)
+ : Array.isArray(b) ? d3_interpolateArray
+ : t === "object" && isNaN(b) ? d3_interpolateObject
: d3_interpolateNumber)(a, b);
}
];
@@ -5664,6 +5776,7 @@ d3_transitionPrototype.ease = function(value) {
d3_transitionPrototype.delay = function(value) {
var id = this.id;
+ if (arguments.length < 1) return this.node().__transition__[id].delay;
return d3_selection_each(this, typeof value === "function"
? function(node, i, j) { node.__transition__[id].delay = +value.call(node, node.__data__, i, j); }
: (value = +value, function(node) { node.__transition__[id].delay = value; }));
@@ -5671,6 +5784,7 @@ d3_transitionPrototype.delay = function(value) {
d3_transitionPrototype.duration = function(value) {
var id = this.id;
+ if (arguments.length < 1) return this.node().__transition__[id].duration;
return d3_selection_each(this, typeof value === "function"
? function(node, i, j) { node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j)); }
: (value = Math.max(1, value), function(node) { node.__transition__[id].duration = value; }));
@@ -5932,8 +6046,14 @@ function d3_html(request) {
d3.xml = d3_xhrType(function(request) {
return request.responseXML;
});
- return d3;
-})();
+ if (typeof define === "function" && define.amd) {
+ define(d3);
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = d3;
+ } else {
+ this.d3 = d3;
+ }
+}();
d3.combobox = function() {
var event = d3.dispatch('accept'),
data = [],
@@ -16151,7 +16271,7 @@ window.iD = function () {
return d3.rebind(context, dispatch, 'on');
};
-iD.version = '1.3.9';
+iD.version = '1.3.10';
(function() {
var detected = {};
@@ -16622,6 +16742,13 @@ iD.geo.interp = function(p1, p2, t) {
p1[1] + (p2[1] - p1[1]) * t];
};
+// 2D cross product of OA and OB vectors, i.e. z-component of their 3D cross product.
+// Returns a positive value, if OAB makes a counter-clockwise turn,
+// negative for clockwise turn, and zero if the points are collinear.
+iD.geo.cross = function(o, a, b) {
+ return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);
+};
+
// http://jsperf.com/id-dist-optimization
iD.geo.euclideanDistance = function(a, b) {
var x = a[0] - b[0], y = a[1] - b[1];
@@ -17092,12 +17219,17 @@ iD.actions.Circularize = function(wayId, projection, maxAngle) {
maxAngle = (maxAngle || 20) * Math.PI / 180;
var action = function(graph) {
- var way = graph.entity(wayId),
- nodes = _.uniq(graph.childNodes(way)),
+ var way = graph.entity(wayId);
+
+ if (!way.isConvex(graph)) {
+ graph = action.makeConvex(graph);
+ }
+
+ var nodes = _.uniq(graph.childNodes(way)),
keyNodes = nodes.filter(function(n) { return graph.parentWays(n).length !== 1; }),
points = nodes.map(function(n) { return projection(n.loc); }),
keyPoints = keyNodes.map(function(n) { return projection(n.loc); }),
- centroid = d3.geom.polygon(points).centroid(),
+ centroid = (points.length === 2) ? iD.geo.interp(points[0], points[1], 0.5) : d3.geom.polygon(points).centroid(),
radius = d3.median(points, function(p) { return iD.geo.euclideanDistance(centroid, p); }),
sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
ids;
@@ -17118,16 +17250,19 @@ iD.actions.Circularize = function(wayId, projection, maxAngle) {
// key points and nodes are those connected to the ways,
// they are projected onto the circle, inbetween nodes are moved
- // to constant internals between key nodes, extra inbetween nodes are
+ // to constant intervals between key nodes, extra inbetween nodes are
// added if necessary.
for (var i = 0; i < keyPoints.length; i++) {
var nextKeyNodeIndex = (i + 1) % keyNodes.length,
- startNodeIndex = nodes.indexOf(keyNodes[i]),
- endNodeIndex = nodes.indexOf(keyNodes[nextKeyNodeIndex]),
+ startNode = keyNodes[i],
+ endNode = keyNodes[nextKeyNodeIndex],
+ startNodeIndex = nodes.indexOf(startNode),
+ endNodeIndex = nodes.indexOf(endNode),
numberNewPoints = -1,
indexRange = endNodeIndex - startNodeIndex,
distance, totalAngle, eachAngle, startAngle, endAngle,
- angle, loc, node, j;
+ angle, loc, node, j,
+ inBetweenNodes = [];
if (indexRange < 0) {
indexRange += nodes.length;
@@ -17135,6 +17270,7 @@ iD.actions.Circularize = function(wayId, projection, maxAngle) {
// position this key node
distance = iD.geo.euclideanDistance(centroid, keyPoints[i]);
+ if (distance === 0) { distance = 1e-4; }
keyPoints[i] = [
centroid[0] + (keyPoints[i][0] - centroid[0]) / distance * radius,
centroid[1] + (keyPoints[i][1] - centroid[1]) / distance * radius];
@@ -17146,7 +17282,7 @@ iD.actions.Circularize = function(wayId, projection, maxAngle) {
totalAngle = endAngle - startAngle;
// detects looping around -pi/pi
- if (totalAngle*sign > 0) {
+ if (totalAngle * sign > 0) {
totalAngle = -sign * (2 * Math.PI - Math.abs(totalAngle));
}
@@ -17177,7 +17313,40 @@ iD.actions.Circularize = function(wayId, projection, maxAngle) {
graph = graph.replace(node);
nodes.splice(endNodeIndex + j, 0, node);
+ inBetweenNodes.push(node.id);
}
+
+ // Check for other ways that share these keyNodes..
+ // If keyNodes are adjacent in both ways,
+ // we can add inBetween nodes to that shared way too..
+ if (indexRange === 1 && inBetweenNodes.length) {
+ var startIndex1 = way.nodes.lastIndexOf(startNode.id),
+ endIndex1 = way.nodes.lastIndexOf(endNode.id),
+ wayDirection1 = (endIndex1 - startIndex1);
+ if (wayDirection1 < -1) { wayDirection1 = 1;}
+
+ /*jshint -W083 */
+ _.each(_.without(graph.parentWays(keyNodes[i]), way), function(sharedWay) {
+ if (sharedWay.areAdjacent(startNode.id, endNode.id)) {
+ var startIndex2 = sharedWay.nodes.lastIndexOf(startNode.id),
+ endIndex2 = sharedWay.nodes.lastIndexOf(endNode.id),
+ wayDirection2 = (endIndex2 - startIndex2),
+ insertAt = endIndex2;
+ if (wayDirection2 < -1) { wayDirection2 = 1;}
+
+ if (wayDirection1 !== wayDirection2) {
+ inBetweenNodes.reverse();
+ insertAt = startIndex2;
+ }
+ for (j = 0; j < inBetweenNodes.length; j++) {
+ sharedWay = sharedWay.addNode(inBetweenNodes[j], insertAt + j);
+ }
+ graph = graph.replace(sharedWay);
+ }
+ });
+ /*jshint +W083 */
+ }
+
}
// update the way to have all the new nodes
@@ -17190,6 +17359,38 @@ iD.actions.Circularize = function(wayId, projection, maxAngle) {
return graph;
};
+ action.makeConvex = function(graph) {
+ var way = graph.entity(wayId),
+ nodes = _.uniq(graph.childNodes(way)),
+ points = nodes.map(function(n) { return projection(n.loc); }),
+ sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
+ hull = d3.geom.hull(points);
+
+ // D3 convex hulls go counterclockwise..
+ if (sign === -1) {
+ nodes.reverse();
+ points.reverse();
+ }
+
+ for (var i = 0; i < hull.length - 1; i++) {
+ var startIndex = points.indexOf(hull[i]),
+ endIndex = points.indexOf(hull[i+1]),
+ indexRange = (endIndex - startIndex);
+
+ if (indexRange < 0) {
+ indexRange += nodes.length;
+ }
+
+ // move interior nodes to the surface of the convex hull..
+ for (var j = 1; j < indexRange; j++) {
+ var point = iD.geo.interp(hull[i], hull[i+1], j / indexRange),
+ node = nodes[(j + startIndex) % nodes.length].move(projection.invert(point));
+ graph = graph.replace(node);
+ }
+ }
+ return graph;
+ };
+
action.disabled = function(graph) {
if (!graph.entity(wayId).isClosed())
return 'not_closed';
@@ -20371,8 +20572,10 @@ iD.operations.Circularize = function(selectedIDs, context) {
};
operation.available = function() {
+ var entity = context.entity(entityId);
return selectedIDs.length === 1 &&
- context.entity(entityId).type === 'way';
+ entity.type === 'way' &&
+ _.uniq(entity.nodes).length > 1;
};
operation.disabled = function() {
@@ -20850,6 +21053,7 @@ iD.areaKeys = {
"bench": true,
"clock": true,
"drinking_water": true,
+ "parking_entrance": true,
"post_box": true,
"telephone": true,
"vending_machine": true,
@@ -22677,11 +22881,15 @@ _.extend(iD.Way.prototype, {
},
isOneWay: function() {
- return this.tags.oneway === 'yes' ||
- this.tags.oneway === '1' ||
- this.tags.oneway === '-1' ||
- this.tags.waterway === 'river' ||
+ // explicit oneway tag..
+ if (['yes', '1', '-1'].indexOf(this.tags.oneway) !== -1) { return true; }
+ if (['no', '0'].indexOf(this.tags.oneway) !== -1) { return false; }
+
+ // implied oneway tag..
+ return this.tags.waterway === 'river' ||
this.tags.waterway === 'stream' ||
+ this.tags.highway === 'motorway' ||
+ this.tags.highway === 'motorway_link' ||
this.tags.junction === 'roundabout';
},
@@ -22689,6 +22897,30 @@ _.extend(iD.Way.prototype, {
return this.nodes.length > 0 && this.first() === this.last();
},
+ isConvex: function(resolver) {
+ if (!this.isClosed() || this.isDegenerate()) return null;
+
+ var nodes = _.uniq(resolver.childNodes(this)),
+ coords = _.pluck(nodes, 'loc'),
+ curr = 0, prev = 0;
+
+ for (var i = 0; i < coords.length; i++) {
+ var o = coords[(i+1) % coords.length],
+ a = coords[i],
+ b = coords[(i+2) % coords.length],
+ res = iD.geo.cross(o, a, b);
+
+ curr = (res > 0) ? 1 : (res < 0) ? -1 : 0;
+ if (curr === 0) {
+ continue;
+ } else if (prev && curr !== prev) {
+ return false;
+ }
+ prev = curr;
+ }
+ return true;
+ },
+
isArea: function() {
if (this.tags.area === 'yes')
return true;
@@ -24008,6 +24240,7 @@ iD.svg.Areas = function(projection) {
beach: 'beach',
scrub: 'scrub',
construction: 'construction',
+ military: 'construction',
cemetery: 'cemetery',
grave_yard: 'cemetery',
meadow: 'meadow',
@@ -24979,12 +25212,12 @@ iD.svg.Surface = function(context) {
};
iD.svg.TagClasses = function() {
var primary = [
- 'highway', 'railway', 'waterway', 'aeroway', 'motorway',
- 'boundary', 'power', 'amenity', 'natural', 'landuse',
- 'building', 'leisure', 'place'
+ 'building', 'highway', 'railway', 'waterway', 'aeroway',
+ 'motorway', 'boundary', 'power', 'amenity', 'natural', 'landuse',
+ 'leisure', 'place'
],
secondary = [
- 'oneway', 'bridge', 'tunnel', 'construction'
+ 'oneway', 'bridge', 'tunnel', 'construction', 'embankment', 'cutting'
],
tagClassRe = /^tag-/,
tags = function(entity) { return entity.tags; };
@@ -25511,7 +25744,7 @@ iD.ui.Background = function(context) {
['bottom', [0, 1]]],
opacityDefault = (context.storage('background-opacity') !== null) ?
(+context.storage('background-opacity')) : 0.5,
- customTemplate;
+ customTemplate = '';
// Can be 0 from <1.3.0 use or due to issue #1923.
if (opacityDefault === 0) opacityDefault = 0.5;
@@ -27498,7 +27731,7 @@ iD.ui.preset = function(context) {
return field.present();
})
.each(function(field) {
- var reference = iD.ui.TagReference({key: field.key});
+ var reference = iD.ui.TagReference(field.reference || {key: field.key});
if (state === 'hover') {
reference.showing(false);
@@ -27605,7 +27838,7 @@ iD.ui.PresetIcon = function() {
$fill.enter().append('div');
$fill.attr('class', function() {
- var s = 'preset-icon-fill icon-' + geom;
+ var s = 'preset-icon-fill preset-icon-fill-' + geom;
for (var i in p.tags) {
s += ' tag-' + i + ' tag-' + i + '-' + p.tags[i];
}
@@ -28503,10 +28736,22 @@ iD.ui.RawTagEditor = function(context) {
}
function keyChange(d) {
- var tag = {};
- tag[d.key] = undefined;
- tag[this.value] = d.value;
- d.key = this.value; // Maintain DOM identity through the subsequent update.
+ var kOld = d.key,
+ kNew = this.value.trim(),
+ tag = {};
+
+ if (kNew && kNew !== kOld) {
+ var match = kNew.match(/^(.*?)(?:_(\d+))?$/),
+ base = match[1],
+ suffix = +(match[2] || 1);
+ while (tags[kNew]) { // rename key if already in use
+ kNew = base + '_' + suffix++;
+ }
+ }
+ tag[kOld] = undefined;
+ tag[kNew] = d.value;
+ d.key = kNew; // Maintain DOM identity through the subsequent update.
+ this.value = kNew;
event.change(tag);
}
@@ -29369,10 +29614,11 @@ iD.ui.preset.access = function(field) {
}
access.options = function(type) {
- var options = ['no', 'permissive', 'private', 'designated', 'destination'];
+ var options = ['no', 'permissive', 'private', 'destination'];
if (type !== 'access') {
options.unshift('yes');
+ options.push('designated');
}
return options.map(function(option) {
@@ -29385,65 +29631,104 @@ iD.ui.preset.access = function(field) {
var placeholders = {
footway: {
- foot: 'yes',
+ foot: 'designated',
motor_vehicle: 'no'
},
steps: {
foot: 'yes',
- motor_vehicle: 'no'
+ motor_vehicle: 'no',
+ bicycle: 'no',
+ horse: 'no'
},
pedestrian: {
foot: 'yes',
motor_vehicle: 'no'
},
cycleway: {
- bicycle: 'yes',
- motor_vehicle: 'no'
+ motor_vehicle: 'no',
+ bicycle: 'designated'
},
bridleway: {
- horse: 'yes'
+ motor_vehicle: 'no',
+ horse: 'designated'
},
path: {
- motor_vehicle: 'no'
+ foot: 'yes',
+ motor_vehicle: 'no',
+ bicycle: 'yes',
+ horse: 'yes'
},
motorway: {
- motor_vehicle: 'yes'
+ foot: 'no',
+ motor_vehicle: 'yes',
+ bicycle: 'no',
+ horse: 'no'
},
trunk: {
motor_vehicle: 'yes'
},
primary: {
- motor_vehicle: 'yes'
+ foot: 'yes',
+ motor_vehicle: 'yes',
+ bicycle: 'yes',
+ horse: 'yes'
},
secondary: {
- motor_vehicle: 'yes'
+ foot: 'yes',
+ motor_vehicle: 'yes',
+ bicycle: 'yes',
+ horse: 'yes'
},
tertiary: {
- motor_vehicle: 'yes'
+ foot: 'yes',
+ motor_vehicle: 'yes',
+ bicycle: 'yes',
+ horse: 'yes'
},
residential: {
- motor_vehicle: 'yes'
+ foot: 'yes',
+ motor_vehicle: 'yes',
+ bicycle: 'yes',
+ horse: 'yes'
},
unclassified: {
- motor_vehicle: 'yes'
+ foot: 'yes',
+ motor_vehicle: 'yes',
+ bicycle: 'yes',
+ horse: 'yes'
},
service: {
- motor_vehicle: 'yes'
+ foot: 'yes',
+ motor_vehicle: 'yes',
+ bicycle: 'yes',
+ horse: 'yes'
},
motorway_link: {
- motor_vehicle: 'yes'
+ foot: 'no',
+ motor_vehicle: 'yes',
+ bicycle: 'no',
+ horse: 'no'
},
trunk_link: {
motor_vehicle: 'yes'
},
primary_link: {
- motor_vehicle: 'yes'
+ foot: 'yes',
+ motor_vehicle: 'yes',
+ bicycle: 'yes',
+ horse: 'yes'
},
secondary_link: {
- motor_vehicle: 'yes'
+ foot: 'yes',
+ motor_vehicle: 'yes',
+ bicycle: 'yes',
+ horse: 'yes'
},
tertiary_link: {
- motor_vehicle: 'yes'
+ foot: 'yes',
+ motor_vehicle: 'yes',
+ bicycle: 'yes',
+ horse: 'yes'
}
};
@@ -29459,7 +29744,9 @@ iD.ui.preset.access = function(field) {
_.forEach(placeholders[tags.highway], function(value, key) {
items.selectAll('#preset-input-access-' + key)
- .attr('placeholder', value);
+ .attr('placeholder', function() {
+ return (tags.access && (value === 'yes' || value === 'designated')) ? tags.access : value;
+ });
});
};
@@ -29647,9 +29934,12 @@ iD.ui.preset.address = function(field, context) {
return d3.rebind(address, event, 'on');
};
-iD.ui.preset.check = function(field) {
+iD.ui.preset.check =
+iD.ui.preset.defaultcheck = function(field) {
var event = d3.dispatch('change'),
- values = [undefined, 'yes', 'no'],
+ values = field.type === 'check' ?
+ [undefined, 'yes', 'no'] :
+ [undefined, 'yes'],
value,
box,
text,
@@ -29665,7 +29955,7 @@ iD.ui.preset.check = function(field) {
.attr('class', 'preset-input-wrap');
enter.append('input')
- .property('indeterminate', true)
+ .property('indeterminate', field.type === 'check')
.attr('type', 'checkbox')
.attr('id', 'preset-input-' + field.id);
@@ -29676,7 +29966,7 @@ iD.ui.preset.check = function(field) {
box = label.select('input')
.on('click', function() {
var t = {};
- t[field.key] = values[(values.indexOf(value) + 1) % 3];
+ t[field.key] = values[(values.indexOf(value) + 1) % values.length];
event.change(t);
d3.event.stopPropagation();
});
@@ -29686,9 +29976,10 @@ iD.ui.preset.check = function(field) {
check.tags = function(tags) {
value = tags[field.key];
- box.property('indeterminate', !value);
+ box.property('indeterminate', field.type === 'check' && !value);
box.property('checked', value === 'yes');
- text.text(value ? t('inspector.check.' + value, {default: value}) : t('inspector.unknown'));
+ text.text(value ? t('inspector.check.' + value, {default: value}) :
+ field.type === 'check' ? t('inspector.unknown') : t('inspector.check.no'));
label.classed('set', !!value);
};
@@ -29764,36 +30055,6 @@ iD.ui.preset.typeCombo = function(field) {
return d3.rebind(combo, event, 'on');
};
-iD.ui.preset.defaultcheck = function(field) {
- var event = d3.dispatch('change'),
- input;
-
- function check(selection) {
- input = selection.selectAll('input')
- .data([0]);
-
- input.enter().append('input')
- .attr('type', 'checkbox')
- .attr('id', 'preset-input-' + field.id);
-
- input
- .on('change', function() {
- var t = {};
- t[field.key] = input.property('checked') ? field.value || 'yes' : undefined;
- event.change(t);
- });
- }
-
- check.tags = function(tags) {
- input.property('checked', !!tags[field.key] && tags[field.key] !== 'no');
- };
-
- check.focus = function() {
- input.node().focus();
- };
-
- return d3.rebind(check, event, 'on');
-};
iD.ui.preset.text =
iD.ui.preset.number =
iD.ui.preset.tel =
@@ -38283,6 +38544,42 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"terms_url": "http://geo.nls.uk/maps/",
"terms_text": "National Library of Scotland Historic Maps"
},
+ {
+ "name": "Ireland British War Office 1:25k GSGS 3906",
+ "type": "tms",
+ "template": "http://mapwarper.net/layers/tile/101/{zoom}/{x}/{y}.png",
+ "scaleExtent": [
+ 0,
+ 18
+ ],
+ "polygon": [
+ [
+ [
+ -10.71,
+ 51.32
+ ],
+ [
+ -10.71,
+ 55.46
+ ],
+ [
+ -5.37,
+ 55.46
+ ],
+ [
+ -5.37,
+ 51.32
+ ],
+ [
+ -10.71,
+ 51.32
+ ]
+ ]
+ ],
+ "terms_url": "http://wiki.openstreetmap.org/wiki/WikiProject_Ireland#Trinity_College_Dublin",
+ "terms_text": "Glucksman Map Library, Trinity College Dublin",
+ "id": "GSGS3906"
+ },
{
"name": "Ireland British War Office One-Inch 1941-43 GSGS 4136",
"type": "tms",
@@ -38512,7 +38809,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
]
],
"terms_url": "http://geo.nls.uk/maps/",
- "terms_text": "National Library of Scotland Historic Maps"
+ "terms_text": "National Library of Scotland Historic Maps",
+ "id": "GSGS4136"
},
{
"name": "Ireland EEA CORINE 2006",
@@ -62978,7 +63276,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
],
"fields": [
"ref",
- "surface"
+ "surface",
+ "length",
+ "width"
],
"tags": {
"aeroway": "runway"
@@ -63259,6 +63559,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Car Sharing"
},
"amenity/car_wash": {
+ "icon": "car",
"geometry": [
"point",
"area"
@@ -63271,6 +63572,25 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
],
"name": "Car Wash"
},
+ "amenity/charging_station": {
+ "icon": "car",
+ "geometry": [
+ "point",
+ "area"
+ ],
+ "tags": {
+ "amenity": "charging_station"
+ },
+ "fields": [
+ "operator"
+ ],
+ "terms": [
+ "EV",
+ "Electric Vehicle",
+ "Supercharger"
+ ],
+ "name": "Charging Station"
+ },
"amenity/childcare": {
"icon": "school",
"fields": [
@@ -63373,6 +63693,17 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"terms": [],
"name": "College"
},
+ "amenity/compressed_air": {
+ "icon": "car",
+ "geometry": [
+ "point",
+ "area"
+ ],
+ "tags": {
+ "amenity": "compressed_air"
+ },
+ "name": "Compressed Air"
+ },
"amenity/courthouse": {
"fields": [
"operator",
@@ -63676,6 +64007,20 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"terms": [],
"name": "Car Parking"
},
+ "amenity/parking_entrance": {
+ "icon": "entrance",
+ "geometry": [
+ "vertex"
+ ],
+ "tags": {
+ "amenity": "parking_entrance"
+ },
+ "fields": [
+ "access_simple",
+ "ref"
+ ],
+ "name": "Parking Garage Entrance/Exit"
+ },
"amenity/pharmacy": {
"icon": "pharmacy",
"fields": [
@@ -64632,8 +64977,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"fields": [
"building",
"levels",
- "address",
- "smoking"
+ "address"
],
"geometry": [
"area"
@@ -64829,7 +65173,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"tags": {
"building": "entrance"
},
- "name": "Entrance",
+ "name": "Entrance/Exit",
"searchable": false
},
"building/garage": {
@@ -66154,7 +66498,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"access_simple",
"address"
],
- "name": "Entrance"
+ "name": "Entrance/Exit"
},
"footway/crossing": {
"fields": [
@@ -66179,6 +66523,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"fields": [
"surface",
"lit",
+ "width",
+ "structure",
"access"
],
"geometry": [
@@ -66191,6 +66537,15 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"terms": [],
"name": "Sidewalk"
},
+ "ford": {
+ "geometry": [
+ "vertex"
+ ],
+ "tags": {
+ "ford": "yes"
+ },
+ "name": "Ford"
+ },
"golf/bunker": {
"icon": "golf",
"geometry": [
@@ -66314,9 +66669,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"highway/bridleway": {
"fields": [
- "access",
"surface",
- "structure"
+ "width",
+ "structure",
+ "access"
],
"icon": "highway-bridleway",
"geometry": [
@@ -66352,7 +66708,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"highway/crossing": {
"fields": [
- "crossing"
+ "crossing",
+ "sloped_curb",
+ "tactile_paving"
],
"geometry": [
"vertex"
@@ -66371,9 +66729,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"fields": [
"surface",
"lit",
+ "width",
+ "oneway",
"structure",
- "access",
- "oneway"
+ "access"
],
"geometry": [
"line"
@@ -66387,9 +66746,11 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"highway/footway": {
"icon": "highway-footway",
"fields": [
+ "surface",
+ "lit",
+ "width",
"structure",
- "access",
- "surface"
+ "access"
],
"geometry": [
"line",
@@ -66513,10 +66874,11 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"highway/path": {
"icon": "highway-path",
"fields": [
+ "surface",
+ "width",
"structure",
"access",
"sac_scale",
- "surface",
"incline",
"trail_visibility",
"ref"
@@ -66532,9 +66894,12 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"highway/pedestrian": {
"fields": [
- "access",
+ "surface",
+ "lit",
+ "width",
"oneway",
- "surface"
+ "structure",
+ "access"
],
"geometry": [
"line",
@@ -66801,8 +67166,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"highway/steps": {
"fields": [
- "access",
- "surface"
+ "surface",
+ "lit",
+ "width",
+ "access"
],
"icon": "highway-steps",
"geometry": [
@@ -67133,7 +67500,22 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"terms": [],
"name": "Cemetery"
},
+ "landuse/churchyard": {
+ "fields": [
+ "religion",
+ "denomination"
+ ],
+ "geometry": [
+ "area"
+ ],
+ "tags": {
+ "landuse": "churchyard"
+ },
+ "terms": [],
+ "name": "Churchyard"
+ },
"landuse/commercial": {
+ "icon": "commercial",
"geometry": [
"point",
"area"
@@ -67266,6 +67648,16 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"terms": [],
"name": "Meadow"
},
+ "landuse/military": {
+ "geometry": [
+ "area"
+ ],
+ "tags": {
+ "landuse": "military"
+ },
+ "terms": [],
+ "name": "Military"
+ },
"landuse/orchard": {
"fields": [
"trees"
@@ -67293,6 +67685,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Quarry"
},
"landuse/residential": {
+ "icon": "building",
"geometry": [
"point",
"area"
@@ -67491,7 +67884,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"icon": "pitch",
"fields": [
"sport",
- "surface"
+ "surface",
+ "lit"
],
"geometry": [
"point",
@@ -67506,7 +67900,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"leisure/pitch/american_football": {
"icon": "america-football",
"fields": [
- "surface"
+ "surface",
+ "lit"
],
"geometry": [
"point",
@@ -67521,6 +67916,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"leisure/pitch/baseball": {
"icon": "baseball",
+ "fields": [
+ "lit"
+ ],
"geometry": [
"point",
"area"
@@ -67536,7 +67934,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"icon": "basketball",
"fields": [
"surface",
- "hoops"
+ "hoops",
+ "lit"
],
"geometry": [
"point",
@@ -67552,7 +67951,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"leisure/pitch/skateboard": {
"icon": "pitch",
"fields": [
- "surface"
+ "surface",
+ "lit"
],
"geometry": [
"point",
@@ -67568,7 +67968,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"leisure/pitch/soccer": {
"icon": "soccer",
"fields": [
- "surface"
+ "surface",
+ "lit"
],
"geometry": [
"point",
@@ -67584,7 +67985,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"leisure/pitch/tennis": {
"icon": "tennis",
"fields": [
- "surface"
+ "surface",
+ "lit"
],
"geometry": [
"point",
@@ -67600,7 +68002,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"leisure/pitch/volleyball": {
"icon": "pitch",
"fields": [
- "surface"
+ "surface",
+ "lit"
],
"geometry": [
"point",
@@ -67683,7 +68086,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"leisure/track": {
"icon": "pitch",
"fields": [
- "surface"
+ "surface",
+ "lit",
+ "width"
],
"geometry": [
"point",
@@ -68609,6 +69014,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"place/city": {
"icon": "city",
+ "fields": [
+ "population"
+ ],
"geometry": [
"point",
"area"
@@ -68620,6 +69028,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"place/hamlet": {
"icon": "triangle-stroked",
+ "fields": [
+ "population"
+ ],
"geometry": [
"point",
"area"
@@ -68661,6 +69072,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"place/locality": {
"icon": "marker",
+ "fields": [
+ "population"
+ ],
"geometry": [
"point",
"area"
@@ -68672,6 +69086,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"place/neighbourhood": {
"icon": "triangle-stroked",
+ "fields": [
+ "population"
+ ],
"geometry": [
"point",
"area"
@@ -68686,6 +69103,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"place/suburb": {
"icon": "triangle-stroked",
+ "fields": [
+ "population"
+ ],
"geometry": [
"point",
"area"
@@ -68701,6 +69121,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"place/town": {
"icon": "town",
+ "fields": [
+ "population"
+ ],
"geometry": [
"point",
"area"
@@ -68712,6 +69135,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"place/village": {
"icon": "village",
+ "fields": [
+ "population"
+ ],
"geometry": [
"point",
"area"
@@ -69321,7 +69747,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Car Dealership"
},
"shop/car_parts": {
- "icon": "shop",
+ "icon": "car",
"fields": [
"address",
"building_area",
@@ -69338,7 +69764,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Car Parts Store"
},
"shop/car_repair": {
- "icon": "shop",
+ "icon": "car",
"fields": [
"address",
"building_area",
@@ -69355,7 +69781,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Car Repair Shop"
},
"shop/chemist": {
- "icon": "shop",
+ "icon": "chemist",
"fields": [
"address",
"building_area",
@@ -69676,7 +70102,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Greengrocer"
},
"shop/hairdresser": {
- "icon": "shop",
+ "icon": "hairdresser",
"fields": [
"address",
"building_area",
@@ -69832,7 +70258,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Mall"
},
"shop/mobile_phone": {
- "icon": "shop",
+ "icon": "mobilephone",
"fields": [
"address",
"building_area",
@@ -69849,7 +70275,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Mobile Phone Store"
},
"shop/motorcycle": {
- "icon": "shop",
+ "icon": "scooter",
"fields": [
"address",
"building_area",
@@ -70181,6 +70607,26 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"name": "Video Store"
},
+ "shop/wine": {
+ "icon": "alcohol-shop",
+ "fields": [
+ "address",
+ "building_area",
+ "opening_hours"
+ ],
+ "geometry": [
+ "point",
+ "vertex",
+ "area"
+ ],
+ "tags": {
+ "shop": "wine"
+ },
+ "terms": [
+ "winery"
+ ],
+ "name": "Wine Shop"
+ },
"tourism": {
"fields": [
"tourism"
@@ -70763,6 +71209,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"waterway/canal": {
"icon": "waterway-canal",
+ "fields": [
+ "width"
+ ],
"geometry": [
"line"
],
@@ -70813,7 +71262,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"waterway/river": {
"icon": "waterway-river",
"fields": [
- "tunnel"
+ "tunnel",
+ "width"
],
"geometry": [
"line"
@@ -70851,7 +71301,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"waterway/stream": {
"icon": "waterway-stream",
"fields": [
- "tunnel"
+ "tunnel",
+ "width"
],
"geometry": [
"line"
@@ -93360,7 +93811,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "chemist"
},
"name": "Müller",
- "icon": "shop",
+ "icon": "chemist",
"geometry": [
"point",
"vertex",
@@ -93379,7 +93830,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "chemist"
},
"name": "Schlecker",
- "icon": "shop",
+ "icon": "chemist",
"geometry": [
"point",
"vertex",
@@ -93398,7 +93849,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "chemist"
},
"name": "Etos",
- "icon": "shop",
+ "icon": "chemist",
"geometry": [
"point",
"vertex",
@@ -93417,7 +93868,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "chemist"
},
"name": "Bipa",
- "icon": "shop",
+ "icon": "chemist",
"geometry": [
"point",
"vertex",
@@ -93436,7 +93887,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "chemist"
},
"name": "Rossmann",
- "icon": "shop",
+ "icon": "chemist",
"geometry": [
"point",
"vertex",
@@ -93455,7 +93906,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "chemist"
},
"name": "DM Drogeriemarkt",
- "icon": "shop",
+ "icon": "chemist",
"geometry": [
"point",
"vertex",
@@ -93474,7 +93925,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "chemist"
},
"name": "Ihr Platz",
- "icon": "shop",
+ "icon": "chemist",
"geometry": [
"point",
"vertex",
@@ -93493,7 +93944,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "chemist"
},
"name": "Douglas",
- "icon": "shop",
+ "icon": "chemist",
"geometry": [
"point",
"vertex",
@@ -93512,7 +93963,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "chemist"
},
"name": "Kruidvat",
- "icon": "shop",
+ "icon": "chemist",
"geometry": [
"point",
"vertex",
@@ -93531,7 +93982,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Peugeot",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93550,7 +94001,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Kwik Fit",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93569,7 +94020,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "ATU",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93588,7 +94039,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Kwik-Fit",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93607,7 +94058,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Midas",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93626,7 +94077,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Feu Vert",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93645,7 +94096,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Norauto",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93664,7 +94115,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Speedy",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93683,7 +94134,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Автозапчасти",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93702,7 +94153,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Renault",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93721,7 +94172,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Pit Stop",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93740,7 +94191,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Jiffy Lube",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93759,7 +94210,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Шиномонтаж",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93778,7 +94229,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "СТО",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93797,7 +94248,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "O'Reilly Auto Parts",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93816,7 +94267,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Carglass",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93835,7 +94286,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "шиномонтаж",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93854,7 +94305,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Citroen",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93873,7 +94324,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Euromaster",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93892,7 +94343,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Firestone",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93911,7 +94362,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "AutoZone",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93930,7 +94381,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Автосервис",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93949,7 +94400,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Advance Auto Parts",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -93968,7 +94419,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "car_repair"
},
"name": "Roady",
- "icon": "shop",
+ "icon": "car",
"geometry": [
"point",
"vertex",
@@ -94927,24 +95378,6 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
],
"suggestion": true
},
- "shop/car/Ford": {
- "tags": {
- "name": "Ford",
- "shop": "car"
- },
- "name": "Ford",
- "icon": "car",
- "geometry": [
- "point",
- "vertex",
- "area"
- ],
- "fields": [
- "address",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/car/Volkswagen": {
"tags": {
"name": "Volkswagen",
@@ -98756,7 +99189,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Билайн",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98775,7 +99208,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "ソフトバンクショップ (SoftBank shop)",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98794,7 +99227,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Vodafone",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98813,7 +99246,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "O2",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98832,7 +99265,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Carphone Warehouse",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98851,7 +99284,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Orange",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98870,7 +99303,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Verizon Wireless",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98889,7 +99322,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Sprint",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98908,7 +99341,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "T-Mobile",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98927,7 +99360,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "МТС",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98946,7 +99379,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Евросеть",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98965,7 +99398,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Bell",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -98984,7 +99417,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "The Phone House",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -99003,7 +99436,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "SFR",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -99022,7 +99455,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Связной",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -99041,7 +99474,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Мегафон",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -99060,7 +99493,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "AT&T",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -99079,7 +99512,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "ドコモショップ (docomo shop)",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -99098,7 +99531,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "au",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -99117,7 +99550,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Movistar",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -99136,7 +99569,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "mobile_phone"
},
"name": "Bitė",
- "icon": "shop",
+ "icon": "mobilephone",
"geometry": [
"point",
"vertex",
@@ -99193,7 +99626,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "hairdresser"
},
"name": "Klier",
- "icon": "shop",
+ "icon": "hairdresser",
"geometry": [
"point",
"vertex",
@@ -99212,7 +99645,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "hairdresser"
},
"name": "Supercuts",
- "icon": "shop",
+ "icon": "hairdresser",
"geometry": [
"point",
"vertex",
@@ -99231,7 +99664,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "hairdresser"
},
"name": "Hairkiller",
- "icon": "shop",
+ "icon": "hairdresser",
"geometry": [
"point",
"vertex",
@@ -99250,7 +99683,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "hairdresser"
},
"name": "Great Clips",
- "icon": "shop",
+ "icon": "hairdresser",
"geometry": [
"point",
"vertex",
@@ -99269,7 +99702,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "hairdresser"
},
"name": "Парикмахерская",
- "icon": "shop",
+ "icon": "hairdresser",
"geometry": [
"point",
"vertex",
@@ -99288,7 +99721,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "hairdresser"
},
"name": "Стиль",
- "icon": "shop",
+ "icon": "hairdresser",
"geometry": [
"point",
"vertex",
@@ -99307,7 +99740,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "hairdresser"
},
"name": "Fryzjer",
- "icon": "shop",
+ "icon": "hairdresser",
"geometry": [
"point",
"vertex",
@@ -99326,7 +99759,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "hairdresser"
},
"name": "Franck Provost",
- "icon": "shop",
+ "icon": "hairdresser",
"geometry": [
"point",
"vertex",
@@ -99345,7 +99778,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "hairdresser"
},
"name": "Салон красоты",
- "icon": "shop",
+ "icon": "hairdresser",
"geometry": [
"point",
"vertex",
@@ -99383,7 +99816,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": "motorcycle"
},
"name": "Yamaha",
- "icon": "shop",
+ "icon": "scooter",
"geometry": [
"point",
"vertex",
@@ -99486,7 +99919,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"landuse/farmyard",
"landuse/forest",
"landuse/meadow",
- "landuse/cemetery"
+ "landuse/cemetery",
+ "landuse/military"
]
},
"category-path": {
@@ -99589,6 +100023,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"bicycle",
"horse"
],
+ "reference": {
+ "key": "access"
+ },
"type": "access",
"label": "Access",
"placeholder": "Unknown",
@@ -99647,6 +100084,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"addr:city",
"addr:postcode"
],
+ "reference": {
+ "key": "addr"
+ },
"icon": "address",
"universal": true,
"label": "Address",
@@ -99769,7 +100209,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
},
"building_area": {
"key": "building",
- "type": "check",
+ "type": "defaultcheck",
"default": "yes",
"geometry": "area",
"label": "Building"
@@ -99928,6 +100368,51 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"type": "combo",
"label": "Fuel"
},
+ "fuel/biodiesel": {
+ "key": "fuel:biodiesel",
+ "type": "check",
+ "label": "Sells Biodiesel"
+ },
+ "fuel/diesel": {
+ "key": "fuel:diesel",
+ "type": "check",
+ "label": "Sells Diesel"
+ },
+ "fuel/e10": {
+ "key": "fuel:e10",
+ "type": "check",
+ "label": "Sells E10"
+ },
+ "fuel/e85": {
+ "key": "fuel:e85",
+ "type": "check",
+ "label": "Sells E85"
+ },
+ "fuel/lpg": {
+ "key": "fuel:lpg",
+ "type": "check",
+ "label": "Sells Propane"
+ },
+ "fuel/octane_100": {
+ "key": "fuel:octane_100",
+ "type": "check",
+ "label": "Sells Racing Gasoline"
+ },
+ "fuel/octane_91": {
+ "key": "fuel:octane_91",
+ "type": "check",
+ "label": "Sells Regular Gasoline"
+ },
+ "fuel/octane_95": {
+ "key": "fuel:octane_95",
+ "type": "check",
+ "label": "Sells Midgrade Gasoline"
+ },
+ "fuel/octane_98": {
+ "key": "fuel:octane_98",
+ "type": "check",
+ "label": "Sells Premium Gasoline"
+ },
"gauge": {
"key": "gauge",
"type": "combo",
@@ -100038,6 +100523,11 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"type": "typeCombo",
"label": "Type"
},
+ "length": {
+ "key": "length",
+ "type": "number",
+ "label": "Length (Meters)"
+ },
"levels": {
"key": "building:levels",
"type": "number",
@@ -100167,6 +100657,11 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"type": "typeCombo",
"label": "Type"
},
+ "population": {
+ "key": "population",
+ "type": "text",
+ "label": "Population"
+ },
"power": {
"key": "power",
"type": "typeCombo",
@@ -100293,6 +100788,11 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"type": "typeCombo",
"label": "Type"
},
+ "sloped_curb": {
+ "key": "sloped_curb",
+ "type": "combo",
+ "label": "Sloped Curb"
+ },
"smoking": {
"key": "smoking",
"type": "combo",
@@ -100356,7 +100856,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"bridge",
"tunnel",
"embankment",
- "cutting"
+ "cutting",
+ "ford"
],
"label": "Structure",
"placeholder": "Unknown",
@@ -100365,7 +100866,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"bridge": "Bridge",
"tunnel": "Tunnel",
"embankment": "Embankment",
- "cutting": "Cutting"
+ "cutting": "Cutting",
+ "ford": "Ford"
}
}
},
@@ -100388,6 +100890,11 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"type": "combo",
"label": "Surface"
},
+ "tactile_paving": {
+ "key": "tactile_paving",
+ "type": "check",
+ "label": "Tactile Paving"
+ },
"toilets/disposal": {
"key": "toilets:disposal",
"type": "combo",
@@ -100473,6 +100980,11 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"universal": true,
"label": "Wheelchair Access"
},
+ "width": {
+ "key": "width",
+ "type": "number",
+ "label": "Width (Meters)"
+ },
"wikipedia": {
"key": "wikipedia",
"type": "wikipedia",
@@ -111903,6 +112415,62 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
504
]
},
+ "hairdresser": {
+ "12": [
+ 42,
+ 528
+ ],
+ "18": [
+ 24,
+ 528
+ ],
+ "24": [
+ 0,
+ 528
+ ]
+ },
+ "chemist": {
+ "12": [
+ 96,
+ 528
+ ],
+ "18": [
+ 78,
+ 528
+ ],
+ "24": [
+ 54,
+ 528
+ ]
+ },
+ "mobilephone": {
+ "12": [
+ 150,
+ 528
+ ],
+ "18": [
+ 132,
+ 528
+ ],
+ "24": [
+ 108,
+ 528
+ ]
+ },
+ "scooter": {
+ "12": [
+ 204,
+ 528
+ ],
+ "18": [
+ 186,
+ 528
+ ],
+ "24": [
+ 162,
+ 528
+ ]
+ },
"highway-motorway": {
"line": [
20,
@@ -112350,7 +112918,6 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"nl",
"en-GB",
"et",
- "fil",
"fi",
"fr",
"gl",
@@ -112382,6 +112949,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"sl",
"es",
"sv",
+ "tl",
"ta",
"te",
"tr",
@@ -113004,6 +113572,33 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"fuel": {
"label": "Fuel"
},
+ "fuel/biodiesel": {
+ "label": "Sells Biodiesel"
+ },
+ "fuel/diesel": {
+ "label": "Sells Diesel"
+ },
+ "fuel/e10": {
+ "label": "Sells E10"
+ },
+ "fuel/e85": {
+ "label": "Sells E85"
+ },
+ "fuel/lpg": {
+ "label": "Sells Propane"
+ },
+ "fuel/octane_100": {
+ "label": "Sells Racing Gasoline"
+ },
+ "fuel/octane_91": {
+ "label": "Sells Regular Gasoline"
+ },
+ "fuel/octane_95": {
+ "label": "Sells Midgrade Gasoline"
+ },
+ "fuel/octane_98": {
+ "label": "Sells Premium Gasoline"
+ },
"gauge": {
"label": "Gauge"
},
@@ -113069,6 +113664,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"leisure": {
"label": "Type"
},
+ "length": {
+ "label": "Length (Meters)"
+ },
"levels": {
"label": "Levels",
"placeholder": "2, 4, 6..."
@@ -113140,6 +113738,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"place": {
"label": "Type"
},
+ "population": {
+ "label": "Population"
+ },
"power": {
"label": "Type"
},
@@ -113203,6 +113804,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"shop": {
"label": "Type"
},
+ "sloped_curb": {
+ "label": "Sloped Curb"
+ },
"smoking": {
"label": "Smoking"
},
@@ -113226,7 +113830,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"bridge": "Bridge",
"tunnel": "Tunnel",
"embankment": "Embankment",
- "cutting": "Cutting"
+ "cutting": "Cutting",
+ "ford": "Ford"
}
},
"studio_type": {
@@ -113238,6 +113843,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"surface": {
"label": "Surface"
},
+ "tactile_paving": {
+ "label": "Tactile Paving"
+ },
"toilets/disposal": {
"label": "Disposal"
},
@@ -113281,6 +113889,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"wheelchair": {
"label": "Wheelchair Access"
},
+ "width": {
+ "label": "Width (Meters)"
+ },
"wikipedia": {
"label": "Wikipedia"
},
@@ -113425,6 +114036,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Car Wash",
"terms": ""
},
+ "amenity/charging_station": {
+ "name": "Charging Station",
+ "terms": "EV,Electric Vehicle,Supercharger"
+ },
"amenity/childcare": {
"name": "Childcare",
"terms": "nursery,orphanage,playgroup"
@@ -113445,6 +114060,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "College",
"terms": ""
},
+ "amenity/compressed_air": {
+ "name": "Compressed Air",
+ "terms": ""
+ },
"amenity/courthouse": {
"name": "Courthouse",
"terms": ""
@@ -113509,6 +114128,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Car Parking",
"terms": ""
},
+ "amenity/parking_entrance": {
+ "name": "Parking Garage Entrance/Exit",
+ "terms": ""
+ },
"amenity/pharmacy": {
"name": "Pharmacy",
"terms": ""
@@ -113754,7 +114377,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"terms": ""
},
"building/entrance": {
- "name": "Entrance",
+ "name": "Entrance/Exit",
"terms": ""
},
"building/garage": {
@@ -114034,7 +114657,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"terms": ""
},
"entrance": {
- "name": "Entrance",
+ "name": "Entrance/Exit",
"terms": ""
},
"footway/crossing": {
@@ -114045,6 +114668,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Sidewalk",
"terms": ""
},
+ "ford": {
+ "name": "Ford",
+ "terms": ""
+ },
"golf/bunker": {
"name": "Sand Trap",
"terms": "hazard,bunker"
@@ -114277,6 +114904,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Cemetery",
"terms": ""
},
+ "landuse/churchyard": {
+ "name": "Churchyard",
+ "terms": ""
+ },
"landuse/commercial": {
"name": "Commercial",
"terms": ""
@@ -114317,6 +114948,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Meadow",
"terms": ""
},
+ "landuse/military": {
+ "name": "Military",
+ "terms": ""
+ },
"landuse/orchard": {
"name": "Orchard",
"terms": ""
@@ -115069,6 +115704,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
"name": "Video Store",
"terms": ""
},
+ "shop/wine": {
+ "name": "Wine Shop",
+ "terms": "winery"
+ },
"tourism": {
"name": "Tourism",
"terms": ""
diff --git a/vendor/assets/iD/iD/img/maki-sprite.png b/vendor/assets/iD/iD/img/maki-sprite.png
index af7b5322cc8f4e499846629b22ab7e4d71ffba51..e4028833d114b4327157bbc9a5c7bd648e43fc96 100644
GIT binary patch
literal 113751
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 a1?hlpk$c<*(hF5g|M1Dlv
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