Merge branch 'master' of github.com:systemed/iD

This commit is contained in:
Tom MacWright
2013-02-13 11:13:43 -05:00
46 changed files with 1061 additions and 920 deletions
+2 -2
View File
@@ -52,8 +52,8 @@ all: \
js/id/ui/*.js \
js/id/validate.js \
js/id/end.js \
locale/locale.js \
locale/en.js
js/lib/locale.js \
locale/*.js
iD.js: Makefile
@rm -f $@
+1 -1
View File
@@ -61,7 +61,7 @@
<script src='js/id/ui/commit.js'></script>
<script src='js/id/ui/success.js'></script>
<script src='js/id/ui/loading.js'></script>
<script src='js/id/ui/userpanel.js'></script>
<script src='js/id/ui/account.js'></script>
<script src='js/id/ui/layerswitcher.js'></script>
<script src='js/id/ui/contributors.js'></script>
<script src='js/id/ui/geocoder.js'></script>
+41 -51
View File
@@ -19,10 +19,11 @@ body {
}
.limiter {
position: relative;
max-width: 1200px;
}
div, textarea, input, span, ul, li, ol, a, button {
div, textarea, input, form, span, ul, li, ol, a, button {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
@@ -120,7 +121,7 @@ input[type=text]:focus {
}
input[type=text] {
padding:4px 10px;
padding:5px 10px;
height:30px;
resize: none;
}
@@ -181,11 +182,11 @@ ul li { list-style: none;}
ul.toggle-list li a {
font-weight: bold;
color: #333;
padding: 10px;
border-top: 1px solid white;
padding: 5px 10px;
display:block;
border-top: 1px solid rgba(0, 0, 0, .5);
text-wrap:no-wrap;
border-top: 1px solid #ccc;
white-space:nowrap;
text-overflow:ellipsis;
overflow:hidden;
}
ul.toggle-list li a:hover { background-color: #ececec;}
@@ -223,7 +224,7 @@ ul.link-list li:last-child {
.fillD {
background:rgba(0,0,0,.8);
color: #a9a9a9;
color: #6C6C6C;
}
@@ -266,10 +267,6 @@ button:hover {
background-color: #ececec;
}
button.col3:hover {
background: #bde5aa;
}
button.active {
cursor:url(../img/cursor-pointing.png) 6 1, auto;
}
@@ -280,7 +277,7 @@ button.disabled {
}
button.active:not([disabled]):not(.disabled) {
background: #6bc641;
background: #7092ff;
}
button.minor {
@@ -325,7 +322,7 @@ button.centered {
border-radius:0 4px 4px 0;
}
button.Browse .label { display: none;}
button.browse .label { display: none;}
button.action {
background: #7092ff;
@@ -352,8 +349,7 @@ button.save .count {
button.save.has-count .count {
display: block;
position: absolute;
top: 0;
bottom: 0;
top: 5px;
background: rgba(255, 255, 255, .5);
color: #333;
padding: 10px;
@@ -655,14 +651,15 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;}
}
.map-control > button.active:hover {
background: #6bc641;
background: #7092ff;
}
.map-overlay {
width: 150px;
position:absolute;
left:40px;
top:0;
right: 75%;
max-width: 260px;
min-width: 210px;
position: fixed;
left: 40px;
display: block;
border-radius: 4px;
}
@@ -688,10 +685,6 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;}
top:190px;
}
.layerswitcher-control .map-overlay {
width:250px;
}
.nudge-container {
margin-top: 10px;
}
@@ -701,10 +694,8 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;}
font-size:10px;
padding:0 5px 3px 5px;
background: white;
border:0;
text-transform: uppercase;
font-weight: bold;
}
.layerswitcher-control .adjustments button:hover {
@@ -741,9 +732,9 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;}
.layerswitcher-control .nudge {
text-indent: -9999px;
overflow: hidden;
width:20px;
width:16.6666%;
border-radius: 0;
margin-right:1px;
border-right: 1px solid rgba(0, 0, 0, .5);
position: relative;
}
@@ -786,7 +777,7 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;}
}
.layerswitcher-control .reset {
width: 45px;
width: 33.3333%;
border-radius: 0 4px 4px 0;
}
@@ -820,8 +811,8 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;}
.layerswitcher-control li:hover .select-box,
.layerswitcher-control li.selected .select-box {
border: 2px solid #6bc641;
background: rgba(107, 198, 65, .5);
border: 2px solid #7092ff;
background: rgba(89, 123, 231, .5);
opacity: .5;
}
.layerswitcher-control li.selected:hover .select-box,
@@ -838,25 +829,29 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;}
/* Geocoder */
.geocode-control {
.geocode-control, .geocode-control form {
top:150px;
}
.geocode-control input {
width: 140px;
border: 1px solid #ccc;
margin: 4px;
.geocode-control form {
padding: 4px;
}
.geocode-control div {
top: 50px;
width: 340px;
margin: 4px;
padding: 5px;
.geocode-control input {
width: 100%;
}
.geocode-control div span {
.geocode-control div.content {
z-index: 100;
top: 190px;
max-height: 300px;
overflow-y: auto;
}
.geocode-control div.content span {
display: inline-block;
border-bottom: 1px solid #333;
padding: 5px 10px;
}
/* Geolocator */
@@ -935,17 +930,17 @@ img.tile {
color:#fff;
}
#user-list a:not(:last-child):after {
.user-list a:not(:last-child):after {
content: ', ';
}
/* Account Information */
.user-container {
.account {
float: left;
}
.user-container .logout {
.account .logout {
margin-left:10px;
border-left: 1px solid white;
padding-left: 10px;
@@ -1150,11 +1145,6 @@ div.typeahead a:first-child {
padding: 20px;
}
.modal-section .buttons {
padding-top: 10px;
width: 100%;
}
.modal-section img.wiki-image {
max-width: 100%;
max-height: 300px;
@@ -1218,7 +1208,7 @@ a.success-action {
}
.notice .zoom-to:hover {
background: #bde5aa;
background: #d8e1ff;
}
.notice .zoom-to .icon {
+21 -152
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 88 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 13 KiB

+9 -6
View File
@@ -57,6 +57,7 @@
<script src="js/id/svg/labels.js"></script>
<script src="js/id/ui.js"></script>
<script src='js/id/ui/attribution.js'></script>
<script src='js/id/ui/radial_menu.js'></script>
<script src='js/id/ui/inspector.js'></script>
<script src='js/id/ui/modal.js'></script>
@@ -65,7 +66,7 @@
<script src='js/id/ui/commit.js'></script>
<script src='js/id/ui/success.js'></script>
<script src='js/id/ui/loading.js'></script>
<script src='js/id/ui/userpanel.js'></script>
<script src='js/id/ui/account.js'></script>
<script src='js/id/ui/layerswitcher.js'></script>
<script src='js/id/ui/modes.js'></script>
<script src='js/id/ui/contributors.js'></script>
@@ -82,6 +83,7 @@
<script src='js/id/ui/source_switch.js'></script>
<script src='js/id/ui/toggle.js'></script>
<script src='js/id/ui/undo_redo.js'></script>
<script src='js/id/ui/zoom.js'></script>
<script src='js/id/actions.js'></script>
<script src="js/id/actions/add_midpoint.js"></script>
@@ -146,14 +148,15 @@
<script src='js/id/connection.js'></script>
<script src='js/id/validate.js'></script>
<script src='locale/locale.js'></script>
<script src='locale/en.js'></script>
<script src='locale/ja.js'></script>
<script src='locale/fr.js'></script>
<script src='js/lib/locale.js'></script>
<script src='locale/da.js'></script>
<script src='locale/de.js'></script>
<script src='locale/en.js'></script>
<script src='locale/es.js'></script>
<script src='locale/fr.js'></script>
<script src='locale/ja.js'></script>
<script src='locale/lv.js'></script>
<script src='locale/tr.js'></script>
<script src='locale/es.js'></script>
</head>
<body>
+1 -1
View File
@@ -12,7 +12,7 @@ iD.behavior.Lasso = function(context) {
pos = [d3.event.clientX, d3.event.clientY];
lasso = iD.ui.lasso().a(d3.mouse(context.surface().node()));
lasso = iD.ui.Lasso().a(d3.mouse(context.surface().node()));
context.surface().call(lasso);
+19 -65
View File
@@ -1,78 +1,32 @@
iD.behavior.Select = function(context) {
var behavior = function(selection) {
var timeout = null,
// the position of the first mousedown
pos = null;
function click(event) {
d3.event = event;
function click() {
var datum = d3.event.target.__data__;
if (datum instanceof iD.Entity) {
if (d3.event.shiftKey) {
context.enter(iD.modes.Select(context, context.selection().concat([datum.id])));
} else {
context.enter(iD.modes.Select(context, [datum.id]));
}
if (!(datum instanceof iD.Entity)) {
if (!d3.event.shiftKey)
context.enter(iD.modes.Browse(context));
} else if (!d3.event.shiftKey) {
context.enter(iD.modes.Browse(context));
// Avoid re-entering Select mode with same entity.
if (context.selection().length !== 1 || context.selection()[0] !== datum.id)
context.enter(iD.modes.Select(context, [datum.id]));
} else if (context.selection().indexOf(datum.id) >= 0) {
var selection = _.without(context.selection(), datum.id);
context.enter(selection.length ?
iD.modes.Select(context, selection) :
iD.modes.Browse(context));
} else {
context.enter(iD.modes.Select(context, context.selection().concat([datum.id])));
}
}
function mousedown() {
var datum = d3.event.target.__data__;
pos = [d3.event.clientX, d3.event.clientY];
if (datum instanceof iD.Entity || (datum && datum.type === 'midpoint')) {
selection
.on('mousemove.select', mousemove)
.on('touchmove.select', mousemove);
// we've seen a mousedown within 400ms of this one, so ignore
// both because they will be a double click
if (timeout !== null) {
window.clearTimeout(timeout);
selection.on('mousemove.select', null);
timeout = null;
} else {
// queue the click handler to fire in 400ms if no other clicks
// are detected
timeout = window.setTimeout((function(event) {
return function() {
click(event);
timeout = null;
selection.on('mousemove.select', null);
};
// save the event for the click handler
})(d3.event), 200);
}
}
}
// allow mousemoves to cancel the click
function mousemove() {
if (iD.geo.dist([d3.event.clientX, d3.event.clientY], pos) > 4) {
window.clearTimeout(timeout);
timeout = null;
}
}
function mouseup() {
selection.on('mousemove.select', null);
if (pos && d3.event.clientX === pos[0] && d3.event.clientY === pos[1] &&
!(d3.event.target.__data__ instanceof iD.Entity)) {
context.enter(iD.modes.Browse(context));
}
}
selection
.on('mousedown.select', mousedown)
.on('mouseup.select', mouseup)
.on('touchstart.select', mousedown);
selection.on('click.select', click);
};
behavior.off = function(selection) {
selection.on('mousedown.select', null);
selection.on('click.select', null);
};
return behavior;
+1 -1
View File
@@ -228,7 +228,7 @@ iD.Connection = function(context) {
if (img && img[0].getAttribute('href')) {
image_url = img[0].getAttribute('href');
}
callback(connection.user({
callback(undefined, connection.user({
display_name: u.attributes.display_name.nodeValue,
image_url: image_url,
id: u.attributes.id.nodeValue
+2
View File
@@ -85,6 +85,8 @@ window.iD = function () {
context.projection = map.projection;
context.tail = map.tail;
context.redraw = map.redraw;
context.zoomIn = map.zoomIn;
context.zoomOut = map.zoomOut;
context.container = function(_) {
if (!arguments.length) return container;
+16 -8
View File
@@ -4,8 +4,9 @@ iD.modes.Select = function(context, selection, initial) {
button: 'browse'
};
var inspector = iD.ui.inspector().initial(!!initial),
var inspector = iD.ui.Inspector().initial(!!initial),
keybinding = d3.keybinding('select'),
timeout = null,
behaviors = [
iD.behavior.Hover(),
iD.behavior.Select(context),
@@ -160,22 +161,27 @@ iD.modes.Select = function(context, selection, initial) {
.call(keybinding);
context.surface()
.on('dblclick.select', dblclick)
.selectAll("*")
.filter(selected)
.classed('selected', true);
radialMenu = iD.ui.RadialMenu(operations);
var showMenu = d3.event && !initial;
if (d3.event && !initial) {
var loc = context.map().mouseCoordinates();
if (showMenu) {
if (entity && entity.type === 'node') {
loc = entity.loc;
radialMenu.center(context.projection(entity.loc));
} else {
radialMenu.center(d3.mouse(context.surface().node()));
}
context.surface().call(radialMenu, context.projection(loc));
}
timeout = window.setTimeout(function() {
if (showMenu) context.surface().call(radialMenu);
context.surface()
.on('dblclick.select', dblclick)
}, 200);
};
mode.exit = function() {
@@ -183,6 +189,8 @@ iD.modes.Select = function(context, selection, initial) {
changeTags(singular(), inspector.tags());
}
if (timeout) window.clearTimeout(timeout);
context.container()
.select('.inspector-wrap')
.style('display', 'none')
+28 -65
View File
@@ -37,31 +37,21 @@ iD.ui = function(context) {
.attr('class', 'button-wrap col1')
.call(iD.ui.Save(context));
var zoom = container.append('div')
.attr('class', 'zoombuttons map-control')
.selectAll('button')
.data([['zoom-in', '+', map.zoomIn, t('zoom-in')], ['zoom-out', '-', map.zoomOut, t('zoom-out')]])
.enter()
.append('button')
.attr('tabindex', -1)
.attr('class', function(d) { return d[0]; })
.attr('title', function(d) { return d[3]; })
.on('click.editor', function(d) { return d[2](); })
.append('span')
.attr('class', function(d) {
return d[0] + ' icon';
});
container.append('div')
.attr('class', 'map-control zoombuttons')
.call(iD.ui.Zoom(context));
if (navigator.geolocation) {
container.append('div')
.call(iD.ui.geolocate(map));
}
container.append('div')
.attr('class', 'map-control geocode-control')
.call(iD.ui.Geocoder(context));
container.append('div').attr('class', 'geocode-control map-control')
.call(iD.ui.geocoder(context));
container.append('div')
.attr('class', 'map-control layerswitcher-control')
.call(iD.ui.LayerSwitcher(context));
container.append('div').attr('class', 'map-control layerswitcher-control')
.call(iD.ui.layerswitcher(context));
container.append('div')
.attr('class', 'map-control geolocate-control')
.call(iD.ui.Geolocate(map));
container.append('div')
.style('display', 'none')
@@ -70,20 +60,13 @@ iD.ui = function(context) {
var about = container.append('div')
.attr('class','col12 about-block fillD pad1');
var userContainer = about.append('div')
.attr('class', 'user-container');
about.append('div')
.attr('class', 'account')
.call(iD.ui.Account(context));
userContainer
.append('div')
.attr('class', 'hello');
var aboutList = about.append('ul')
.attr('id','about')
.attr('class','link-list');
var linkList = aboutList.append('ul')
.attr('id','about')
.attr('class','pad1 fillD about-block link-list');
var linkList = about.append('ul')
.attr('id', 'about')
.attr('class', 'pad1 fillD about-block link-list');
linkList.append('li')
.append('a')
@@ -97,27 +80,21 @@ iD.ui = function(context) {
.attr('href', 'http://github.com/systemed/iD/issues')
.text(t('report_a_bug'));
var imagery = linkList.append('li')
.attr('id', 'attribution');
imagery.append('span')
.text('imagery');
imagery
.append('span')
.attr('class', 'provided-by');
linkList.append('li')
.attr('class', 'attribution')
.call(iD.ui.Attribution(context));
linkList.append('li')
.attr('class', 'source-switch')
.call(iD.ui.SourceSwitch(context));
linkList.append('li')
.attr('id', 'user-list')
.call(iD.ui.contributors(context));
.attr('class', 'user-list')
.call(iD.ui.Contributors(context));
window.onbeforeunload = function() {
history.save();
if (history.hasChanges()) return t('unsaved_changes');
if (history.hasChanges()) return t('save.unsaved_changes');
};
d3.select(window).on('resize.editor', function() {
@@ -139,11 +116,7 @@ iD.ui = function(context) {
.on('←', pan([pa, 0]))
.on('↑', pan([0, pa]))
.on('→', pan([-pa, 0]))
.on('↓', pan([0, -pa]))
.on('⇧=', function() { map.zoomIn(); })
.on('+', function() { map.zoomIn(); })
.on('-', function() { map.zoomOut(); })
.on('dash', function() { map.zoomOut(); });
.on('↓', pan([0, -pa]));
d3.select(document)
.call(keybinding);
@@ -156,21 +129,11 @@ iD.ui = function(context) {
map.centerZoom([-77.02271, 38.90085], 20);
}
userContainer.call(iD.ui.userpanel(connection)
.on('logout.editor', connection.logout)
.on('login.editor', connection.authenticate));
context.enter(iD.modes.Browse(context));
if (!context.storage('sawSplash')) {
iD.ui.splash(context.container());
context.storage('sawSplash', true);
}
if (history.lock() && history.restorableChanges()) {
iD.ui.restore(context.container(), history);
}
context.container()
.call(iD.ui.Splash(context))
.call(iD.ui.Restore(context));
};
};
+53
View File
@@ -0,0 +1,53 @@
iD.ui.Account = function(context) {
var connection = context.connection();
function update(selection) {
if (!connection.authenticated()) {
selection.html('')
.style('display', 'none');
return;
}
selection.style('display', 'block');
connection.userDetails(function(err, details) {
selection.html('');
if (err) return;
// Link
var userLink = selection.append('a')
.attr('href', connection.url() + '/user/' + details.display_name)
.attr('target', '_blank');
// Add thumbnail or dont
if (details.image_url) {
userLink.append('img')
.attr('class', 'icon icon-pre-text user-icon')
.attr('src', details.image_url);
} else {
userLink.append('span')
.attr('class', 'icon avatar icon-pre-text');
}
// Add user name
userLink.append('span')
.attr('class', 'label')
.text(details.display_name);
selection.append('a')
.attr('class', 'logout')
.attr('href', '#')
.text(t('logout'))
.on('click.logout', function() {
d3.event.preventDefault();
connection.logout();
});
});
}
return function(selection) {
connection.on('auth', function() { update(selection); });
update(selection);
};
};
+10
View File
@@ -0,0 +1,10 @@
iD.ui.Attribution = function(context) {
return function(selection) {
selection.append('span')
.text('imagery');
selection
.append('span')
.attr('class', 'provided-by');
}
};
+52 -46
View File
@@ -1,4 +1,4 @@
iD.ui.commit = function(context) {
iD.ui.Commit = function(context) {
var event = d3.dispatch('cancel', 'save', 'fix');
function zipSame(d) {
@@ -31,47 +31,44 @@ iD.ui.commit = function(context) {
header = selection.append('div').attr('class', 'header modal-section fillL'),
body = selection.append('div').attr('class', 'body');
header.append('h2').text('Save Changes');
header.append('h2')
.text(t('commit.title'));
// Comment Box
var comment_section = body.append('div').attr('class','modal-section fillD');
var commentField = comment_section.append('textarea')
var commentSection = body.append('div')
.attr('class', 'modal-section fillD');
var commentField = commentSection.append('textarea')
.attr('class', 'changeset-comment')
.attr('placeholder', 'Brief Description of your contributions')
.attr('placeholder', t('commit.description_placeholder'))
.property('value', context.storage('comment') || '');
commentField.node().select();
var commit_info =
comment_section
.append('p')
.attr('class','commit-info');
var userLink = d3.select(document.createElement('div'));
commit_info.append('span').text('The changes you upload as ');
var user_link = commit_info.append('a')
.attr('class','user-info')
.text(user.display_name)
.attr('href', connection.url() + '/user/' + user.display_name)
.attr('target', '_blank');
commit_info.append('span').text(' will be visible on all maps that use OpenStreetMap data:');
userLink.append('a')
.attr('class','user-info')
.text(user.display_name)
.attr('href', connection.url() + '/user/' + user.display_name)
.attr('target', '_blank');
if (user.image_url) {
user_link
.append('img')
.attr('src', user.image_url)
.attr('class', 'icon icon-pre-text user-icon');
userLink.append('img')
.attr('src', user.image_url)
.attr('class', 'icon icon-pre-text user-icon');
}
// Confirm / Cancel Buttons
var buttonwrap = comment_section.append('div')
.attr('class', 'buttons cf')
.append('div')
.attr('class', 'button-wrap joined col4');
commentSection.append('p')
.attr('class', 'commit-info')
.html(t('commit.upload_explanation', {user: userLink.html()}));
var savebutton = buttonwrap
.append('button')
// Confirm / Cancel Buttons
var buttonWrap = commentSection.append('div')
.attr('class', 'buttons cf')
.append('div')
.attr('class', 'button-wrap joined col4');
var saveButton = buttonWrap.append('button')
.attr('class', 'save action col6 button')
.on('click.save', function() {
var comment = commentField.node().value;
@@ -80,62 +77,71 @@ iD.ui.commit = function(context) {
comment: comment
});
});
savebutton.append('span').attr('class','label').text('Save');
var cancelbutton = buttonwrap.append('button')
saveButton.append('span')
.attr('class', 'label')
.text(t('commit.save'));
var cancelButton = buttonWrap.append('button')
.attr('class', 'cancel col6 button')
.on('click.cancel', function() {
event.cancel();
});
cancelbutton.append('span').attr('class','label').text('Cancel');
cancelButton.append('span')
.attr('class', 'label')
.text(t('commit.cancel'));
var warnings = body.selectAll('div.warning-section')
.data(iD.validate(changes, context.graph()))
.enter()
.append('div').attr('class', 'modal-section warning-section fillL');
.append('div')
.attr('class', 'modal-section warning-section fillL');
warnings.append('h3')
.text('Warnings');
.text(t('commit.warnings'));
var warning_li = warnings.append('ul')
var warningLi = warnings.append('ul')
.attr('class', 'changeset-list')
.selectAll('li')
.data(function(d) { return d; })
.enter()
.append('li');
warning_li.append('button')
warningLi.append('button')
.attr('class', 'minor')
.on('click', event.fix)
.append('span')
.attr('class', 'icon warning');
warning_li.append('strong').text(function(d) {
warningLi.append('strong').text(function(d) {
return d.message;
});
var section = body.selectAll('div.commit-section')
.data(['modified', 'deleted', 'created'].filter(changesLength))
.enter()
.append('div').attr('class', 'commit-section modal-section fillL2');
.append('div')
.attr('class', 'commit-section modal-section fillL2');
section.append('h3').text(function(d) {
return d.charAt(0).toUpperCase() + d.slice(1);
})
section.append('h3')
.text(function(d) { return t('commit.' + d); })
.append('small')
.attr('class', 'count')
.text(changesLength);
var li = section.append('ul')
.attr('class','changeset-list')
.attr('class', 'changeset-list')
.selectAll('li')
.data(function(d) { return zipSame(changes[d]); })
.enter()
.append('li');
li.append('strong').text(function(d) {
return (d.count > 1) ? d.type + 's ' : d.type + ' ';
});
li.append('strong')
.text(function(d) {
return (d.count > 1) ? d.type + 's ' : d.type + ' ';
});
li.append('span')
.text(function(d) { return d.name; })
.attr('title', function(d) { return d.tagText; });
+1 -1
View File
@@ -1,4 +1,4 @@
iD.ui.contributors = function(context) {
iD.ui.Contributors = function(context) {
function update(selection) {
var users = {},
limit = 3,
+8 -4
View File
@@ -1,4 +1,4 @@
iD.ui.geocoder = function(context) {
iD.ui.Geocoder = function(context) {
function resultExtent(bounds) {
return new iD.geo.Extent(
[parseFloat(bounds[3]), parseFloat(bounds[0])],
@@ -64,7 +64,7 @@ iD.ui.geocoder = function(context) {
function setVisible(show) {
if (show !== shown) {
button.classed('active', show);
gcForm.call(iD.ui.toggle(show));
gcForm.call(iD.ui.Toggle(show));
if (!show) resultsList.classed('hide', !show);
if (show) inputNode.node().focus();
else inputNode.node().blur();
@@ -75,8 +75,12 @@ iD.ui.geocoder = function(context) {
var button = selection.append('button')
.attr('tabindex', -1)
.attr('title', t('geocoder.title'))
.html('<span class=\'geocode icon\'></span>')
.on('click', toggle);
.on('click', toggle)
.call(bootstrap.tooltip()
.placement('right'));
button.append('span')
.attr('class', 'icon geocode');
var gcForm = selection.append('form');
+16 -13
View File
@@ -1,4 +1,8 @@
iD.ui.geolocate = function(map) {
iD.ui.Geolocate = function(map) {
function click() {
navigator.geolocation.getCurrentPosition(
success, error);
}
function success(position) {
map.center([position.coords.longitude, position.coords.latitude]);
@@ -7,17 +11,16 @@ iD.ui.geolocate = function(map) {
function error() { }
return function(selection) {
selection
.attr('class', 'geolocate-control map-control')
.append('button')
.attr('tabindex', -1)
.attr('title', 'Show My Location')
.on('click', function() {
navigator.geolocation.getCurrentPosition(
success, error);
})
.append('span')
.attr('class','icon geolocate');
};
if (!navigator.geolocation) return;
var button = selection.append('button')
.attr('tabindex', -1)
.attr('title', t('geolocate.title'))
.on('click', click)
.call(bootstrap.tooltip()
.placement('right'));
button.append('span')
.attr('class', 'icon geolocate');
};
};
+25 -18
View File
@@ -1,4 +1,4 @@
iD.ui.inspector = function() {
iD.ui.Inspector = function() {
var event = d3.dispatch('changeTags', 'close'),
taginfo = iD.taginfo(),
initial = false,
@@ -22,20 +22,24 @@ iD.ui.inspector = function() {
.attr('class', 'inspector-inner tag-wrap fillL2');
inspectorwrap.append('h4')
.text(t('edit_tags'));
.text(t('inspector.edit_tags'));
tagList = inspectorwrap.append('ul');
var newTag = inspectorwrap.append('button')
.attr('class', 'add-tag');
.attr('class', 'add-tag');
newTag.on('click', function() {
addTag();
focusNewKey();
});
newTag.on('click', function () {
addTag();
focusNewKey();
});
newTag.append('span').attr('class', 'icon icon-pre-text plus');
newTag.append('span').attr('class','label').text(t('inspector.new_tag'));
newTag.append('span')
.attr('class', 'icon icon-pre-text plus');
newTag.append('span')
.attr('class', 'label')
.text(t('inspector.new_tag'));
drawTags(entity.tags);
@@ -43,7 +47,7 @@ iD.ui.inspector = function() {
.attr('class', 'inspector-buttons pad1 fillD')
.call(drawButtons);
inspector.call(iD.ui.toggle(true));
inspector.call(iD.ui.Toggle(true));
}
function drawHead(selection) {
@@ -62,17 +66,20 @@ iD.ui.inspector = function() {
var entity = selection.datum();
var inspectorButton = selection.append('button')
.attr('class', 'apply action')
.on('click', apply);
.attr('class', 'apply action')
.on('click', apply);
inspectorButton.append('span').attr('class','label').text(t('okay'));
inspectorButton.append('span')
.attr('class','label')
.text(t('inspector.okay'));
var minorButtons = selection.append('div').attr('class','minor-buttons fl');
var minorButtons = selection.append('div')
.attr('class','minor-buttons fl');
minorButtons.append('a')
.attr('href', 'http://www.openstreetmap.org/browse/' + entity.type + '/' + entity.osmId())
.attr('target', '_blank')
.text('View on OSM');
minorButtons.append('a')
.attr('href', 'http://www.openstreetmap.org/browse/' + entity.type + '/' + entity.osmId())
.attr('target', '_blank')
.text(t('inspector.view_on_osm'));
}
function drawTags(tags) {
+3 -3
View File
@@ -1,4 +1,4 @@
iD.ui.lasso = function() {
iD.ui.Lasso = function() {
var center, box,
group,
@@ -13,7 +13,7 @@ iD.ui.lasso = function() {
box = group.append('rect')
.attr('class', 'lasso-box');
group.call(iD.ui.toggle(true));
group.call(iD.ui.Toggle(true));
}
@@ -50,7 +50,7 @@ iD.ui.lasso = function() {
lasso.close = function(selection) {
if (group) {
group.call(iD.ui.toggle(false, function() {
group.call(iD.ui.Toggle(false, function() {
d3.select(this).remove();
}));
}
+16 -12
View File
@@ -1,4 +1,4 @@
iD.ui.layerswitcher = function(context) {
iD.ui.LayerSwitcher = function(context) {
var event = d3.dispatch('cancel', 'save'),
opacities = [1, 0.5, 0];
@@ -23,17 +23,20 @@ iD.ui.layerswitcher = function(context) {
.attr('tabindex', -1)
.attr('class', 'fillD')
.attr('title', t('layerswitcher.description'))
.html("<span class='layers icon'></span>")
.on('click.layerswitcher-toggle', toggle);
.on('click.layerswitcher-toggle', toggle)
.call(bootstrap.tooltip()
.placement('right'));
button.append('span')
.attr('class', 'layers icon');
function show() { setVisible(true); }
function hide() { setVisible(false); }
function toggle() { setVisible(content.classed('hide')); }
function setVisible(show) {
if (show !== shown) {
button.classed('active', show);
content.call(iD.ui.toggle(show));
content.call(iD.ui.Toggle(show));
shown = show;
}
}
@@ -89,7 +92,7 @@ iD.ui.layerswitcher = function(context) {
return d === context.background().source();
});
var provided_by = context.container().select('#attribution .provided-by')
var provided_by = context.container().select('.attribution .provided-by')
.html('');
if (d.data.terms_url) {
@@ -133,7 +136,7 @@ iD.ui.layerswitcher = function(context) {
return d.data.name;
});
layerLinks.exit().remove();
layerLinks.enter()
var LayerInner = layerLinks.enter()
.append('li')
.append('a')
.attr('data-original-title', function(d) {
@@ -141,18 +144,19 @@ iD.ui.layerswitcher = function(context) {
})
.attr('href', '#')
.attr('class', 'layer')
.text(function(d) {
return d.data.name;
})
.each(function(d) {
// only set tooltips for layers with tooltips
if (d.data.description) {
d3.select(this).call(bootstrap.tooltip().placement('right'));
}
})
.on('click.set-source', clickSetSource)
.insert('span')
.on('click.set-source', clickSetSource);
LayerInner.insert('span')
.attr('class','icon toggle');
LayerInner.insert('span').text(function(d) {
return d.data.name;
});
selectLayer(context.background().source());
}
+1 -1
View File
@@ -11,7 +11,7 @@ iD.ui.Modes = function(context) {
buttons.enter().append('button')
.attr('tabindex', -1)
.attr('class', function(mode) { return mode.title + ' add-button col3'; })
.attr('class', function(mode) { return mode.id + ' add-button col3'; })
.on('click.mode-buttons', function(mode) { context.enter(mode); })
.call(bootstrap.tooltip()
.placement('bottom')
+9 -2
View File
@@ -1,7 +1,8 @@
iD.ui.RadialMenu = function(operations) {
var menu;
var menu,
center = [0, 0];
var radialMenu = function(selection, center) {
var radialMenu = function(selection) {
if (!operations.length)
return;
@@ -94,5 +95,11 @@ iD.ui.RadialMenu = function(operations) {
}
};
radialMenu.center = function(_) {
if (!arguments.length) return center;
center = _;
return radialMenu;
};
return radialMenu;
};
+33 -27
View File
@@ -1,34 +1,40 @@
iD.ui.restore = function(selection, history) {
var modal = iD.ui.modal(selection);
iD.ui.Restore = function(context) {
return function(selection) {
if (!context.history().lock() || !context.history().restorableChanges())
return;
modal.select('.modal')
.attr('class', 'modal-splash modal');
var modal = iD.ui.modal(selection);
var introModal = modal.select('.content')
.append('div')
.attr('class', 'modal-section fillL')
.text('You have unsaved changes from a previous editing session. Do you wish to restore these changes?');
modal.select('.modal')
.attr('class', 'modal-splash modal');
buttons = introModal
.append('div')
.attr('class', 'buttons cf')
var introModal = modal.select('.content');
introModal.append('div')
.attr('class', 'modal-section fillL')
.append('h3')
.text(t('restore.description'));
var buttonWrap = introModal.append('div')
.attr('class', 'modal-section fillD cf col12');
var buttons = buttonWrap
.append('div')
.attr('class', 'button-wrap joined col4');
.attr('class', 'button-wrap joined col6');
buttons.append('button')
.attr('class', 'save action button col6')
.text('Restore')
.on('click', function() {
history.load();
modal.remove();
});
buttons.append('button')
.attr('class', 'save action button col6')
.text(t('restore.restore'))
.on('click', function() {
context.history().load();
modal.remove();
});
buttons.append('button')
.attr('class', 'cancel button col6')
.text('Reset')
.on('click', function() {
modal.remove();
});
return modal;
buttons.append('button')
.attr('class', 'cancel button col6')
.text(t('restore.reset'))
.on('click', function() {
modal.remove();
});
}
};
+6 -6
View File
@@ -17,7 +17,7 @@ iD.ui.Save = function(context) {
modal.select('.content')
.classed('commit-modal', true)
.datum(changes)
.call(iD.ui.commit(context)
.call(iD.ui.Commit(context)
.on('cancel', function() {
modal.remove();
})
@@ -30,7 +30,7 @@ iD.ui.Save = function(context) {
context.container().select('.shaded')
.remove();
var loading = iD.ui.loading(context.container(), t('uploading_changes'), true);
var loading = iD.ui.loading(context.container(), t('save.uploading'), true);
connection.putChangeset(
history.changes(),
@@ -44,7 +44,7 @@ iD.ui.Save = function(context) {
var desc = iD.ui.confirm()
.select('.description');
desc.append('h2')
.text(t('save_error'));
.text(t('save.error'));
desc.append('p').text(err.responseText);
} else {
success(e, changeset_id);
@@ -60,7 +60,7 @@ iD.ui.Save = function(context) {
id: changeset_id,
comment: e.comment
})
.call(iD.ui.success(connection)
.call(iD.ui.Success(connection)
.on('cancel', function() {
modal.remove();
}));
@@ -81,11 +81,11 @@ iD.ui.Save = function(context) {
.call(bootstrap.tooltip()
.placement('bottom')
.html(true)
.title(iD.ui.tooltipHtml(t('save_help'), key)));
.title(iD.ui.tooltipHtml(t('save.help'), key)));
button.append('span')
.attr('class', 'label')
.text(t('save'));
.text(t('save.title'));
button.append('span')
.attr('class', 'count');
+26 -15
View File
@@ -1,21 +1,32 @@
iD.ui.splash = function(selection) {
var modal = iD.ui.modal(selection);
iD.ui.Splash = function(context) {
return function(selection) {
if (context.storage('sawSplash'))
return;
modal.select('.modal')
.attr('class', 'modal-splash modal');
context.storage('sawSplash', true);
var introModal = modal.select('.content')
.append('div')
.attr('class', 'modal-section fillL');
var modal = iD.ui.modal(selection);
introModal.append('div')
.attr('class','logo');
modal.select('.modal')
.attr('class', 'modal-splash modal');
introModal.append('div')
.html("<h2 class>Welcome to the iD OpenStreetMap editor</h2><p>" +
"This is development version 0.0.0-alpha1. " +
"For more information see <a href='http://ideditor.com/'>ideditor.com</a>" +
" and report bugs at <a href='https://github.com'>github.com.systemed/iD</a>.</p>");
var introModal = modal.select('.content')
.append('div')
.attr('class', 'modal-section fillL');
return modal;
introModal.append('div')
.attr('class', 'logo');
var div = introModal.append('div');
div.append("h2")
.text(t('splash.welcome'));
div.append("p")
.html(t('splash.text', {
version: iD.version,
website: '<a href="http://ideditor.com/">ideditor.com</a>',
github: '<a href="https://github.com/systemed/iD">github.com</a>'
}));
}
};
+1 -1
View File
@@ -1,4 +1,4 @@
iD.ui.success = function(connection) {
iD.ui.Success = function(connection) {
var event = d3.dispatch('cancel', 'save');
function success(selection) {
+5 -4
View File
@@ -11,7 +11,7 @@ iD.ui.tagReference = function(selection) {
.enter()
.append('span')
.attr('title', function(d) {
return 'used with ' + d;
return t('tag_reference.used_with', {type: d});
})
.attr('class', function(d) {
return 'icon big icon-pre-text big-' + d;
@@ -19,12 +19,12 @@ iD.ui.tagReference = function(selection) {
header.append('span')
.text(g('title'));
referenceBody = selection.append('div')
var referenceBody = selection.append('div')
.attr('class','modal-section fillL2');
referenceBody
.append('h5')
.text(t('description'));
.text(t('tag_reference.description'));
if (selection.datum().image) {
referenceBody
@@ -36,6 +36,7 @@ iD.ui.tagReference = function(selection) {
referenceBody
.append('p')
.text(g('description'));
referenceBody
.append('a')
.attr('target', '_blank')
@@ -43,7 +44,7 @@ iD.ui.tagReference = function(selection) {
return 'http://wiki.openstreetmap.org/wiki/' + d.title;
})
.text(function(d) {
return d.title + ' on wiki.osm.org';
return t('tag_reference.on_wiki', {tag: d.title});
});
});
};
+1 -1
View File
@@ -2,7 +2,7 @@
// hide class, which sets display=none, and a d3 transition for opacity.
// this will cause blinking when called repeatedly, so check that the
// value actually changes between calls.
iD.ui.toggle = function(show, callback) {
iD.ui.Toggle = function(show, callback) {
return function(selection) {
selection.style('opacity', show ? 0 : 1)
.classed('hide', false)
-54
View File
@@ -1,54 +0,0 @@
iD.ui.userpanel = function(connection) {
var event = d3.dispatch('logout', 'login');
function user(selection) {
function update() {
if (connection.authenticated()) {
selection.style('display', 'block');
connection.userDetails(function(err, user_details) {
selection.html('');
if (err) return;
// Link
var userLink = selection.append('a')
.attr('href', connection.url() + '/user/' +
user_details.display_name)
.attr('target', '_blank');
// Add thumbnail or dont
if (user_details.image_url) {
userLink.append('img')
.attr('class', 'icon icon-pre-text user-icon')
.attr('src', user_details.image_url);
} else {
userLink.append('span')
.attr('class','icon avatar icon-pre-text');
}
// Add user name
userLink.append('span')
.attr('class','label')
.text(user_details.display_name);
selection
.append('a')
.attr('class', 'logout')
.attr('href', '#')
.text(t('logout'))
.on('click.logout', function() {
d3.event.preventDefault();
event.logout();
});
});
} else {
selection.html('').style('display', 'none');
}
}
connection.on('auth', update);
update();
}
return d3.rebind(user, event, 'on');
};
+40
View File
@@ -0,0 +1,40 @@
iD.ui.Zoom = function(context) {
var zooms = [{
id: 'zoom-in',
title: t('zoom.in'),
action: context.zoomIn,
key: '+'
}, {
id: 'zoom-out',
title: t('zoom.out'),
action: context.zoomOut,
key: '-'
}];
return function(selection) {
var button = selection.selectAll('button')
.data(zooms)
.enter().append('button')
.attr('tabindex', -1)
.attr('class', function(d) { return d.id; })
.on('click.editor', function(d) { d.action(); })
.call(bootstrap.tooltip()
.placement('right')
.html(true)
.title(function(d) {
return iD.ui.tooltipHtml(d.title, d.key);
}));
button.append('span')
.attr('class', function(d) { return d.id + ' icon'; });
var keybinding = d3.keybinding('zoom')
.on('+', function() { context.zoomIn(); })
.on('-', function() { context.zoomOut(); })
.on('⇧=', function() { context.zoomIn(); })
.on('dash', function() { context.zoomOut(); });
d3.select(document)
.call(keybinding);
}
};
+13
View File
@@ -22,6 +22,10 @@ Let's look at an example line from `en.js`:
no_results: "Couldn't locate a place named '{name}'"
```
`no_results` is the translation _key_, and should not be translated.
The text to the right of the colon, `"Couldn't locate a place named '{name}'"`,
is the string to be translated.
The word in brackets, `{name}`, should **not** be translated into a new
language: it's replaced with a place name when iD presents the text. So
a French translation would look like
@@ -30,6 +34,15 @@ a French translation would look like
no_results: "Impossible de localiser l'endroit nommé '{name}'"
```
For technical reasons, a few translation keys are quoted. For example:
```
'delete': "Delete"
```
Only translate the value to the right of the colon, not the quoted key on
the left.
## License
Contributions to translations are under the same liberal
+99 -73
View File
@@ -3,25 +3,21 @@ locale.da = {
add_area: {
title: "Område",
description: "Tilføj parker, bygninger, søer, eller andre områder til kortet.",
tail: "Klik på kortet for at indtegne et område fx en park, sø eller bygning.",
key: "A"
tail: "Klik på kortet for at indtegne et område fx en park, sø eller bygning."
},
add_line: {
title: "Linje",
description: "Linjer kan være veje, gader eller stier selv kanaler kan være linjer.",
tail: "Klik på koret for at indtegne en vej, sti eller rute.",
key: "L"
tail: "Klik på koret for at indtegne en vej, sti eller rute."
},
add_point: {
title: "Punkt",
description: "Restauranter, mindesmærker og postkasser er punkter.",
tail: "Klik på kortet for at tilføje et punkt.",
key: "P"
tail: "Klik på kortet for at tilføje et punkt."
},
browse: {
title: "Browse",
description: "Træk rundt og zoom på kortet.",
key: "B"
description: "Træk rundt og zoom på kortet."
},
draw_area: {
tail: "Klik her for at tilføje punkter til dit område. Click the first point to finish the area."
@@ -34,27 +30,27 @@ locale.da = {
operations: {
add: {
annotation: {
point: "Added a point.",
vertex: "Added a node to a way."
point: "Tilføjede et punkt.",
vertex: "Tilføjede en node til en vej."
}
},
start: {
annotation: {
line: "Started a line.",
area: "Started an area."
line: "Startede en linje.",
area: "Startede et område."
}
},
'continue': {
annotation: {
line: "Continued a line.",
area: "Continued an area."
line: "Forsatte en linje.",
area: "Forsatte et område."
}
},
cancel_draw: {
annotation: "Cancelled drawing."
annotation: "Annulleret indtegning."
},
change_tags: {
annotation: "Changed tags."
annotation: "Ændret tags."
},
circularize: {
title: "Circularize",
@@ -75,16 +71,16 @@ locale.da = {
}
},
'delete': {
title: "Delete",
description: "Remove this from the map.",
title: "Slet",
description: "Fjern dette fra kortet.",
key: "⌫",
annotation: {
point: "Deleted a point.",
vertex: "Deleted a node from a way.",
line: "Deleted a line.",
area: "Deleted an area.",
relation: "Deleted a relation.",
multiple: "Deleted {n} objects."
point: "Slettede et punkt.",
vertex: "Slettede en node fra en vej.",
line: "Slettede en linje.",
area: "Slettede et område.",
relation: "Sletede en relation.",
multiple: "Slettede {n} objekter."
}
},
connect: {
@@ -108,14 +104,14 @@ locale.da = {
annotation: "Merged {n} lines."
},
move: {
title: "Move",
description: "Move this to a different location.",
title: "Flyt",
description: "Flyt dette til anden lokation.",
key: "M",
annotation: {
point: "Moved a point.",
vertex: "Moved a node in a way.",
line: "Moved a line.",
area: "Moved an area."
point: "Flyttede et punktMoved.",
vertex: "Flyttede en node i en vej.",
line: "Flyttede en linje.",
area: "Flyttede et område."
}
},
reverse: {
@@ -125,60 +121,21 @@ locale.da = {
annotation: "Reversed a line."
},
split: {
title: "Split",
description: "Split this into two ways at this point.",
title: "Del op",
description: "Del op i to vej ved dette punkt.",
key: "X",
annotation: "Split a way."
annotation: "Del op en vej."
}
},
validations: {
untagged_point: "Untagged point which is not part of a line or area",
untagged_line: "Untagged line",
untagged_area: "Untagged area",
tag_suggests_area: "The tag {tag} suggests line should be area, but it is not an area",
deprecated_tags: "Deprecated tags: {tags}"
},
save: "Save",
unsaved_changes: "You have unsaved changes",
save_help: "Save changes to OpenStreetMap, making them visible to other users",
no_changes: "You don't have any changes to save.",
save_error: "An error occurred while trying to save",
uploading_changes: "Uploading changes to OpenStreetMap.",
just_edited: "You Just Edited OpenStreetMap!",
okay: "Okay",
"zoom-in": "Zoom ind",
"zoom-out": "Zoom ud",
nothing_to_undo: "Nothing to undo.",
nothing_to_redo: "Nothing to redo.",
just_edited: "Du har lige rettede i OpenStreetMap!",
browser_notice: "This editor is supported in Firefox, Chrome, Safari, Opera, and Internet Explorer 9 and above. Please upgrade your browser or use Potlatch 2 to edit the map.",
inspector: {
no_documentation_combination: "This is no documentation available for this tag combination",
no_documentation_key: "This is no documentation available for this key",
new_tag: "Nyt Tag"
},
view_on_osm: "Vis på OSM",
zoom_in_edit: "zoom ind for at rette kortet",
edit_tags: "Ret tags",
geocoder: {
title: "Find et sted",
placeholder: "find et sted",
no_results: "Kunne ikke finde '{name}'"
},
description: "Description",
logout: "log ud",
report_a_bug: "report a bug",
layerswitcher: {
@@ -189,13 +146,82 @@ locale.da = {
reset: "nulstill"
},
commit: {
title: "Save Changes",
description_placeholder: "Brief description of your contributions",
upload_explanation: "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
save: "Save",
cancel: "Cancel",
warnings: "Warnings",
modified: "Modified",
deleted: "Deleted",
created: "Created"
},
contributors: {
list: "Vis bidrag fra {users}",
truncated_list: "Vis bidrag fra {users} og {count} andre"
},
geocoder: {
title: "Find et sted",
placeholder: "find et sted",
no_results: "Kunne ikke finde '{name}'"
},
geolocate: {
title: "Show My Location"
},
inspector: {
no_documentation_combination: "Der er ingen dokumentation for denne tag kombination",
no_documentation_key: "Der er ingen dokumenation tilgængelig for denne nøgle",
new_tag: "Nyt Tag",
edit_tags: "Ret tags",
okay: "Ok",
view_on_osm: "View on OSM"
},
restore: {
description: "You have unsaved changes from a previous editing session. Do you wish to restore these changes?",
restore: "Restore",
reset: "Reset"
},
save: {
title: "Gem",
help: "Gem ændringer til OpenStreetMap gør dem synlige for andre brugere",
error: "Der skete en fejl da du prøvede at gemme",
uploading: "Gemmer nu ændringer til OpenStreetMap.",
unsaved_changes: "Du har ændringer der ikke er gemt endnu",
},
splash: {
welcome: "Welcome to the iD OpenStreetMap editor",
text: "This is development version {version}. For more information see {website} and report bugs at {github}."
},
source_switch: {
live: "live",
dev: "dev"
},
tag_reference: {
description: "Description",
on_wiki: "{tag} on wiki.osm.org",
used_with: "used with {type}"
},
zoom: {
in: "Zoom ind",
out: "Zoom ud"
},
validations: {
untagged_point: "Untagged point which is not part of a line or area",
untagged_line: "Untagged line",
untagged_area: "Untagged area",
tag_suggests_area: "The tag {tag} suggests line should be area, but it is not an area",
deprecated_tags: "Deprecated tags: {tags}"
}
};
+67 -37
View File
@@ -128,42 +128,32 @@ locale.de = {
}
},
validations: {
untagged_point: "Punkt ohne Attribute, der kein Teil einer Linie oder Fläche ist",
untagged_line: "Linie ohne Attribute",
untagged_area: "Fläche ohne Attribute",
tag_suggests_area: "Das Attribut {tag} suggeriert eine Fläche, ist aber keine Fläche",
deprecated_tags: "Veralterte Attribute: {tags}"
},
save: "Speichern",
unsaved_changes: "Ungespeicherte Änderugen vorhanden",
save_help: "Speichere Änderungen auf OpenStreetMap, um diese für andere Nutzer sichtbar zu machen",
no_changes: "Keine Änderungen zum Speichern vorhanden.",
save_error: "Beim Speichern ist ein Fehler aufgetreten",
uploading_changes: "Änderungen werden zu OpenStreetMap hochgeladen.",
just_edited: "Sie haben gerade OpenStreetMap editiert!",
okay: "OK",
"zoom-in": "Hineinzoomen",
"zoom-out": "Herauszoomen",
nothing_to_undo: "Nichts zum Rückgängigmachen.",
nothing_to_redo: "Nichts zum Wiederherstellen.",
just_edited: "Sie haben gerade OpenStreetMap editiert!",
browser_notice: "Dieser Editor wird von Firefox, Chrome, Safari, Opera, und Internet Explorer (Version 9 und höher) unterstzützt. Bitte aktualisieren Sie Ihren Browser oder nutzen Sie Potlatch 2, um die Karte zu modifizieren.",
view_on_osm: "Auf OSM anschauen",
zoom_in_edit: "Hineinzoomen, um die Karte zu bearbeiten",
logout: "Abmelden",
report_a_bug: "Programmfehler melden",
inspector: {
no_documentation_combination: "Für dieses Attribut ist keine Dokumentation verfügbar.",
no_documentation_key: "Für dises Schlüsselwort ist keine Dokumentation verfügbar",
new_tag: "Neues Attribut"
commit: {
title: "Änderungen speichern",
description_placeholder: "Eine kurze Beschreibung deiner Beiträge",
upload_explanation: "Änderungen, die du als {user} hochlädst werden sichtbar auf allen Karte, die OpenStreetMap nutzen.",
save: "Speichern",
cancel: "Abbrechen",
warnings: "Warnungen",
modified: "Verändert",
deleted: "Gelöscht",
created: "Erstellt"
},
view_on_osm: "Auf OSM anschauen",
zoom_in_edit: "Hineinzoomen, um die Karte zu bearbeiten",
edit_tags: "Attribute bearbeiten",
contributors: {
list: "Diese Kartenansicht enthält Beiträge von:",
truncated_list: "Diese Kartenansicht enthält Beiträge von: {users} und {count} Anderen"
},
geocoder: {
title: "Suche einen Ort",
@@ -171,15 +161,17 @@ locale.de = {
no_results: "Der Ort '{name}' konnte nicht gefunden werden"
},
description: "Beschreibung",
geolocate: {
title: "Zeige meine Position"
},
report_a_bug: "Programmfehler melden",
logout: "Abmelden",
contributors: {
list: "Diese Kartenansicht enthält Beiträge von:",
truncated_list: "Diese Kartenansicht enthält Beiträge von: {users} und {count} Anderen"
inspector: {
no_documentation_combination: "Für dieses Attribut ist keine Dokumentation verfügbar.",
no_documentation_key: "Für dises Schlüsselwort ist keine Dokumentation verfügbar",
new_tag: "Neues Attribut",
edit_tags: "Attribute bearbeiten",
okay: "OK",
view_on_osm: "auf OSM ansehen"
},
layerswitcher: {
@@ -190,8 +182,46 @@ locale.de = {
reset: "Zurücksetzen"
},
restore: {
description: "Es gibt ungespeicherte Änderungen aus einer vorherigen Sitzung. Möchtest du diese Änderungen wiederherstellen?",
restore: "Wiederherstellen",
reset: "Zurücksetzen"
},
save: {
title: "Speichern",
help: "Speichere Änderungen auf OpenStreetMap, um diese für andere Nutzer sichtbar zu machen",
error: "Beim Speichern ist ein Fehler aufgetreten",
uploading: "Änderungen werden zu OpenStreetMap hochgeladen.",
unsaved_changes: "Ungespeicherte Änderugen vorhanden",
},
splash: {
welcome: "Willkommen beim iD OpenStreetMap editor",
text: "Dies ist eine Entwicklungsversion {version}. Für weitere Informationen besuche {website} und melde Fehler unter {github}."
},
source_switch: {
live: "live",
dev: "dev"
},
tag_reference: {
description: "Beschreibung",
on_wiki: "{tag} auf wiki.osm.org",
used_with: "benutzt mit {type}"
},
validations: {
untagged_point: "Punkt ohne Attribute, der kein Teil einer Linie oder Fläche ist",
untagged_line: "Linie ohne Attribute",
untagged_area: "Fläche ohne Attribute",
tag_suggests_area: "Das Attribut {tag} suggeriert eine Fläche, ist aber keine Fläche",
deprecated_tags: "Veralterte Attribute: {tags}"
},
zoom: {
in: "Hineinzoomen",
out: "Herauszoomen"
}
};
+66 -36
View File
@@ -128,42 +128,32 @@ locale.en = {
}
},
validations: {
untagged_point: "Untagged point which is not part of a line or area",
untagged_line: "Untagged line",
untagged_area: "Untagged area",
tag_suggests_area: "The tag {tag} suggests line should be area, but it is not an area",
deprecated_tags: "Deprecated tags: {tags}"
},
save: "Save",
unsaved_changes: "You have unsaved changes",
save_help: "Save changes to OpenStreetMap, making them visible to other users",
no_changes: "You don't have any changes to save.",
save_error: "An error occurred while trying to save",
uploading_changes: "Uploading changes to OpenStreetMap.",
just_edited: "You Just Edited OpenStreetMap!",
okay: "Okay",
"zoom-in": "Zoom In",
"zoom-out": "Zoom Out",
nothing_to_undo: "Nothing to undo.",
nothing_to_redo: "Nothing to redo.",
just_edited: "You Just Edited OpenStreetMap!",
browser_notice: "This editor is supported in Firefox, Chrome, Safari, Opera, and Internet Explorer 9 and above. Please upgrade your browser or use Potlatch 2 to edit the map.",
view_on_osm: "View on OSM",
zoom_in_edit: "zoom in to edit the map",
logout: "logout",
report_a_bug: "report a bug",
inspector: {
no_documentation_combination: "There is no documentation available for this tag combination",
no_documentation_key: "There is no documentation available for this key",
new_tag: "New Tag"
commit: {
title: "Save Changes",
description_placeholder: "Brief description of your contributions",
upload_explanation: "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
save: "Save",
cancel: "Cancel",
warnings: "Warnings",
modified: "Modified",
deleted: "Deleted",
created: "Created"
},
view_on_osm: "View on OSM",
zoom_in_edit: "zoom in to edit the map",
edit_tags: "Edit tags",
contributors: {
list: "Viewing contributions by {users}",
truncated_list: "Viewing contributions by {users} and {count} others"
},
geocoder: {
title: "Find A Place",
@@ -171,11 +161,18 @@ locale.en = {
no_results: "Couldn't locate a place named '{name}'"
},
description: "Description",
geolocate: {
title: "Show My Location"
},
logout: "logout",
report_a_bug: "report a bug",
inspector: {
no_documentation_combination: "There is no documentation available for this tag combination",
no_documentation_key: "There is no documentation available for this key",
new_tag: "New Tag",
edit_tags: "Edit tags",
okay: "Okay",
view_on_osm: "View on OSM"
},
layerswitcher: {
title: "Background",
@@ -185,13 +182,46 @@ locale.en = {
reset: "reset"
},
contributors: {
list: "Viewing contributions by {users}",
truncated_list: "Viewing contributions by {users} and {count} others"
restore: {
description: "You have unsaved changes from a previous editing session. Do you wish to restore these changes?",
restore: "Restore",
reset: "Reset"
},
save: {
title: "Save",
help: "Save changes to OpenStreetMap, making them visible to other users",
error: "An error occurred while trying to save",
uploading: "Uploading changes to OpenStreetMap.",
unsaved_changes: "You have unsaved changes"
},
splash: {
welcome: "Welcome to the iD OpenStreetMap editor",
text: "This is development version {version}. For more information see {website} and report bugs at {github}."
},
source_switch: {
live: "live",
dev: "dev"
},
tag_reference: {
description: "Description",
on_wiki: "{tag} on wiki.osm.org",
used_with: "used with {type}"
},
validations: {
untagged_point: "Untagged point which is not part of a line or area",
untagged_line: "Untagged line",
untagged_area: "Untagged area",
tag_suggests_area: "The tag {tag} suggests line should be area, but it is not an area",
deprecated_tags: "Deprecated tags: {tags}"
},
zoom: {
in: "Zoom In",
out: "Zoom Out"
}
};
+66 -36
View File
@@ -128,42 +128,32 @@ locale.es = {
}
},
validations: {
untagged_point: "Punto sin etiquetar que no es parte de una línea ni zona.", //"Untagged point which is not part of a line or area",
untagged_line: "Línea sin etiquetar", //"Untagged line",
untagged_area: "Zona sin etiquetar", //"Untagged area",
tag_suggests_area: "La etiqueta {tag} sugiere que esta línea debería ser una zona, pero no lo es.", //"The tag {tag} suggests line should be area, but it is not an area",
deprecated_tags: "Etiquetas obsoletas: {tags}" //"Deprecated tags: {tags}"
},
save: "Guardar", //"Save",
unsaved_changes: "Tienes cambios sin guardar", //"You have unsaved changes",
save_help: "Guardar los cambios en OpenStreetMap haciéndolos visibles a otros usuarios", //"Save changes to OpenStreetMap, making them visible to other users",
no_changes: "No tienes cambios sin guardar", //"You don't have any changes to save.",
save_error: "Ha ocurrido un error tratando de guardar", //"An error occurred while trying to save",
uploading_changes: "Subiendo cambios a OpenStreetMap", //"Uploading changes to OpenStreetMap.",
just_edited: "Acabas de editar OpenStreetMap!", //"You Just Edited OpenStreetMap!",
okay: "OK", //"Okay",
"zoom-in": "Aumentar", // "Zoom In",
"zoom-out": "Alejar", //"Zoom Out",
nothing_to_undo: "Nada para deshacer", //"Nothing to undo.",
nothing_to_redo: "Nada para rehacer", //"Nothing to redo.",
just_edited: "Acabas de editar OpenStreetMap!", //"You Just Edited OpenStreetMap!",
browser_notice: "Este editor soporta Firefox, Chrome, Safari, Opera e Internet Explorer 9 o superior. Por favor actualiza tu navegador o utiliza Potlatch 2 para editar el mapa.", //"This editor is supported in Firefox, Chrome, Safari, Opera, and Internet Explorer 9 and above. Please upgrade your browser or use Potlatch 2 to edit the map.",
view_on_osm: "Ver en OSM", //"View on OSM",
zoom_in_edit: "acercar para editar el mapa", //"zoom in to edit the map",
logout: "cerrar sesión", //"logout",
report_a_bug: "reportar un error", //"report a bug",
inspector: {
no_documentation_combination: "No hay documentación disponible para esta combinación de etiquetas", //"This is no documentation available for this tag combination",
no_documentation_key: "No hay documentación disponible para esta tecla", //"This is no documentation available for this key",
new_tag: "Nueve etiqueta" //"New Tag"
commit: {
title: "Save Changes",
description_placeholder: "Brief description of your contributions",
upload_explanation: "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
save: "Save",
cancel: "Cancel",
warnings: "Warnings",
modified: "Modified",
deleted: "Deleted",
created: "Created"
},
view_on_osm: "Ver en OSM", //"View on OSM",
zoom_in_edit: "acercar para editar el mapa", //"zoom in to edit the map",
edit_tags: "Editar etiquetas", //"Edit tags",
contributors: {
list: "Viendo las contribuciones de usuarios {users}", //"Viewing contributions by {users}",
truncated_list: "Viendo las contribuciones de {users} y {count} más" //"Viewing contributions by {users} and {count} others"
},
geocoder: {
title: "Encontrar un lugar", //"Find A Place",
@@ -171,11 +161,18 @@ locale.es = {
no_results: "No se pudo encontrar el lugar llamado '{name}'" //"Couldn't locate a place named '{name}'"
},
description: "Descripción", //"Description",
geolocate: {
title: "Show My Location"
},
logout: "cerrar sesión", //"logout",
report_a_bug: "reportar un error", //"report a bug",
inspector: {
no_documentation_combination: "No hay documentación disponible para esta combinación de etiquetas", //"This is no documentation available for this tag combination",
no_documentation_key: "No hay documentación disponible para esta tecla", //"This is no documentation available for this key",
new_tag: "Nueve etiqueta", //"New Tag"
edit_tags: "Editar etiquetas", //"Edit tags",
okay: "OK",
view_on_osm: "View on OSM"
},
layerswitcher: {
title: "Fondo", //"Background",
@@ -185,13 +182,46 @@ locale.es = {
reset: "reiniciar" //"reset"
},
contributors: {
list: "Viendo las contribuciones de usuarios {users}", //"Viewing contributions by {users}",
truncated_list: "Viendo las contribuciones de {users} y {count} más" //"Viewing contributions by {users} and {count} others"
restore: {
description: "You have unsaved changes from a previous editing session. Do you wish to restore these changes?",
restore: "Restore",
reset: "Reset"
},
save: {
title: "Guardar", //"Save",
help: "Guardar los cambios en OpenStreetMap haciéndolos visibles a otros usuarios", //"Save changes to OpenStreetMap, making them visible to other users",
error: "Ha ocurrido un error tratando de guardar", //"An error occurred while trying to save",
uploading: "Subiendo cambios a OpenStreetMap", //"Uploading changes to OpenStreetMap.",
unsaved_changes: "Tienes cambios sin guardar" //"You have unsaved changes",
},
splash: {
welcome: "Welcome to the iD OpenStreetMap editor",
text: "This is development version {version}. For more information see {website} and report bugs at {github}."
},
source_switch: {
live: "en vivo", //"live",
dev: "dev"
},
tag_reference: {
description: "Descripción",
on_wiki: "{tag} on wiki.osm.org",
used_with: "used with {type}"
},
validations: {
untagged_point: "Punto sin etiquetar que no es parte de una línea ni zona.", //"Untagged point which is not part of a line or area",
untagged_line: "Línea sin etiquetar", //"Untagged line",
untagged_area: "Zona sin etiquetar", //"Untagged area",
tag_suggests_area: "La etiqueta {tag} sugiere que esta línea debería ser una zona, pero no lo es.", //"The tag {tag} suggests line should be area, but it is not an area",
deprecated_tags: "Etiquetas obsoletas: {tags}" //"Deprecated tags: {tags}"
},
zoom: {
in: "Aumentar", // "Zoom In",
out: "Alejar" //"Zoom Out",
}
};
+70 -40
View File
@@ -128,60 +128,52 @@ locale.fr = {
}
},
validations: {
untagged_point: "Point sans aucun tag ne faisant partie ni d'une ligne, ni d'un polygone",
untagged_line: "Ligne sans aucun tag",
untagged_area: "Polygone sans aucun tag",
tag_suggests_area: "Ce tag {tag} suppose que cette ligne devrait être un polygone, or ce n'est pas le cas",
deprecated_tags: "Tags obsolètes : {tags}"
},
save: "Sauvegarder",
unsaved_changes: "Vous avez des modifications non enregistrées",
save_help: "Envoie des modifications au serveyr OpenStreetMap afin qu'elles soient visibles par les autres contributeurs.",
no_changes: "Vous n'avez aucune modification à enregistrer.",
save_error: "Une erreur est survenue lors de l'enregistrement des données",
uploading_changes: "Envoie des modifications vers OpenStreetMap.",
just_edited: "Vous venez de participer à OpenStreetMap!",
okay: "Okay",
"zoom-in": "Zoomer",
"zoom-out": "Dézoomer",
nothing_to_undo: "Rien à annuler.",
nothing_to_redo: "Rien à refaire.",
just_edited: "Vous venez de participer à OpenStreetMap!",
browser_notice: "Les navigateurs supportés par cet éditeur sont : Firefox, Chrome, Safari, Opera et Internet Explorer (version 9 et supérieures). Pour éditer la carte, veuillez mettre à jour votre navigateur ou utiliser Potlatch 2.",
inspector: {
no_documentation_combination: "Aucune documentation n'est disponible pour cette combinaison de tag",
no_documentation_key: "Aucune documentation n'est disponible pour cette clé",
new_tag: "Nouveau tag"
},
view_on_osm: "Consulter dans OSM",
zoom_in_edit: "Zoomer pour modifier la carte",
edit_tags: "Editer les tags",
geocoder: {
title: "Trouver un emplacement",
placeholder: "Trouver un endroit",
no_results: "Impossible de localiser l'endroit nommé '{name}'"
},
description: "Déscription",
logout: "Déconnexion",
report_a_bug: "Signaler un bug",
commit: {
title: "Save Changes",
description_placeholder: "Brief description of your contributions",
upload_explanation: "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
save: "Save",
cancel: "Cancel",
warnings: "Warnings",
modified: "Modified",
deleted: "Deleted",
created: "Created"
},
contributors: {
list: "Consulter les contributions de {users}",
truncated_list: "Consulter les contributions de {users} et {count} les autres"
},
geocoder: {
title: "Trouver un emplacement",
placeholder: "Trouver un endroit",
no_results: "Impossible de localiser l'endroit nommé '{name}'"
},
geolocate: {
title: "Show My Location"
},
inspector: {
no_documentation_combination: "Aucune documentation n'est disponible pour cette combinaison de tag",
no_documentation_key: "Aucune documentation n'est disponible pour cette clé",
new_tag: "Nouveau tag",
edit_tags: "Editer les tags",
okay: "Okay",
view_on_osm: "View on OSM"
},
layerswitcher: {
title: "Fond de carte",
description: "Paramètres du fond de carte",
@@ -190,8 +182,46 @@ locale.fr = {
reset: "reset"
},
restore: {
description: "You have unsaved changes from a previous editing session. Do you wish to restore these changes?",
restore: "Restore",
reset: "Reset"
},
save: {
title: "Sauvegarder",
help: "Envoie des modifications au serveyr OpenStreetMap afin qu'elles soient visibles par les autres contributeurs.",
error: "Une erreur est survenue lors de l'enregistrement des données",
uploading: "Envoie des modifications vers OpenStreetMap.",
unsaved_changes: "Vous avez des modifications non enregistrées"
},
splash: {
welcome: "Welcome to the iD OpenStreetMap editor",
text: "This is development version {version}. For more information see {website} and report bugs at {github}."
},
source_switch: {
live: "live",
dev: "dev"
},
tag_reference: {
description: "Déscription",
on_wiki: "{tag} on wiki.osm.org",
used_with: "used with {type}"
},
validations: {
untagged_point: "Point sans aucun tag ne faisant partie ni d'une ligne, ni d'un polygone",
untagged_line: "Ligne sans aucun tag",
untagged_area: "Polygone sans aucun tag",
tag_suggests_area: "Ce tag {tag} suppose que cette ligne devrait être un polygone, or ce n'est pas le cas",
deprecated_tags: "Tags obsolètes : {tags}"
},
zoom: {
in: "Zoomer",
out: "Dézoomer"
}
};
+66 -36
View File
@@ -128,42 +128,32 @@ locale.ja = {
}
},
validations: {
untagged_point: "ポイントにタグが付与されておらず、ラインやエリアの一部でもありません",
untagged_line: "ラインにタグが付与されていません",
untagged_area: "エリアにタグが付与されていません",
tag_suggests_area: "ラインに {tag} タグが付与されています。エリアで描かれるべきです",
deprecated_tags: "タグの重複: {tags}"
},
save: "Save",
unsaved_changes: "変更が保存されていません",
save_help: "変更点をOpenStreetMapに保存し、他ユーザが確認できるようにします",
no_changes: "変更点がありません",
save_error: "データ保存中にエラーが発生しました",
uploading_changes: "変更点をOpenStreetMapへアップロードしています",
just_edited: "OpenStreetMap編集完了!",
okay: "OK",
"zoom-in": "ズームイン",
"zoom-out": "ズームアウト",
nothing_to_undo: "やり直す変更点がありません",
nothing_to_redo: "やり直した変更点がありません",
just_edited: "OpenStreetMap編集完了!",
browser_notice: "このエディタは Firefox, Chrome, Safari, Opera, および Internet Explorer 9 以上をサポートしています。ブラウザのバージョンを更新するか、Potlatch 2を使用して編集してください",
view_on_osm: "OSMで確認",
zoom_in_edit: "編集するにはさらに地図を拡大してください",
logout: "ログアウト",
report_a_bug: "バグを報告",
inspector: {
no_documentation_combination: "このタグの組み合わせに関する説明文はありません",
no_documentation_key: "このキーに対する説明文はありません",
new_tag: "新規タグ"
commit: {
title: "Save Changes",
description_placeholder: "Brief description of your contributions",
upload_explanation: "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
save: "Save",
cancel: "Cancel",
warnings: "Warnings",
modified: "Modified",
deleted: "Deleted",
created: "Created"
},
view_on_osm: "OSMで確認",
zoom_in_edit: "編集するにはさらに地図を拡大してください",
edit_tags: "タグを編集",
contributors: {
list: "{users} による編集履歴を確認",
truncated_list: "{users} とその他 {count} 人による編集履歴を表示"
},
geocoder: {
title: "特定地点を検索",
@@ -171,11 +161,18 @@ locale.ja = {
no_results: "'{name}' という名称の地点が見つかりません"
},
description: "説明",
geolocate: {
title: "Show My Location"
},
logout: "ログアウト",
report_a_bug: "バグを報告",
inspector: {
no_documentation_combination: "このタグの組み合わせに関する説明文はありません",
no_documentation_key: "このキーに対する説明文はありません",
new_tag: "新規タグ",
edit_tags: "タグを編集",
okay: "OK",
view_on_osm: "View on OSM"
},
layerswitcher: {
title: "背景画像",
@@ -185,13 +182,46 @@ locale.ja = {
reset: "設定リセット"
},
contributors: {
list: "{users} による編集履歴を確認",
truncated_list: "{users} とその他 {count} 人による編集履歴を表示"
restore: {
description: "You have unsaved changes from a previous editing session. Do you wish to restore these changes?",
restore: "Restore",
reset: "Reset"
},
save: {
title: "Save",
help: "変更点をOpenStreetMapに保存し、他ユーザが確認できるようにします",
error: "データ保存中にエラーが発生しました",
uploading: "変更点をOpenStreetMapへアップロードしています",
unsaved_changes: "変更が保存されていません"
},
splash: {
welcome: "Welcome to the iD OpenStreetMap editor",
text: "This is development version {version}. For more information see {website} and report bugs at {github}."
},
source_switch: {
live: "本番サーバ",
dev: "開発サーバ"
},
tag_reference: {
description: "説明",
on_wiki: "{tag} on wiki.osm.org",
used_with: "used with {type}"
},
validations: {
untagged_point: "ポイントにタグが付与されておらず、ラインやエリアの一部でもありません",
untagged_line: "ラインにタグが付与されていません",
untagged_area: "エリアにタグが付与されていません",
tag_suggests_area: "ラインに {tag} タグが付与されています。エリアで描かれるべきです",
deprecated_tags: "タグの重複: {tags}"
},
zoom: {
in: "ズームイン",
out: "ズームアウト"
}
};
+66 -36
View File
@@ -128,42 +128,32 @@ locale.lv = {
}
},
validations: {
untagged_point: "Neapzīmēts punkts",
untagged_line: "Neapzīmēta līnija",
untagged_area: "Neapzīmēts apgabals",
tag_suggests_area: "Apzīmējums {tag} parasti tiek lietots apgabaliem, bet objekts nav apgabals",
deprecated_tags: "Novecojuši apzīmējumi: {tags}"
},
save: "Saglabāt",
unsaved_changes: "Jums ir nesaglabātas izmaiņas",
save_help: "Saglabā izmaiņas, padarot tās redzamas citiem",
no_changes: "Jums nav izmaiņu, ko saglabāt",
save_error: "Kļūda. Nevarēja saglabāt maiņas",
uploading_changes: "Augšupielādē",
just_edited: "Jūs nupat rediģējāt OpenStreetMap",
okay: "Labi",
"zoom-in": "Pietuvināt",
"zoom-out": "Attālināt",
nothing_to_undo: "Nav nekā, ko atcelt",
nothing_to_redo: "Nav nekā, ko atsaukt",
just_edited: "Jūs nupat rediģējāt OpenStreetMap",
browser_notice: "Šis redaktors tiek atbalstīts ar Firefox, Chrome, Safari, Opera, un Internet Explorer 9 un jaunāku. Lūdzu, atjauniniet savu pārlūkprogrammu vai izmantojiet Potlatch 2 to kartes rediģēšanai",
view_on_osm: "Apskatīt OSM lapu",
zoom_in_edit: "pietuviniet, lai rediģētu karti",
logout: "atslēgties",
report_a_bug: "ziņot par kļūdu",
inspector: {
no_documentation_combination: "Šai apzīmējumu kombinācijai nav piejama dokumetācija",
no_documentation_key: "There is no documentation available for this key",
new_tag: "Jauns apzīmējums"
commit: {
title: "Save Changes",
description_placeholder: "Brief description of your contributions",
upload_explanation: "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
save: "Save",
cancel: "Cancel",
warnings: "Warnings",
modified: "Modified",
deleted: "Deleted",
created: "Created"
},
view_on_osm: "Apskatīt OSM lapu",
zoom_in_edit: "pietuviniet, lai rediģētu karti",
edit_tags: "Rediģēt apzīmējumus",
contributors: {
list: "{users} papildinājumi redzami",
truncated_list: "{users} un {count} citu papildinājumi redzami"
},
geocoder: {
title: "Atrast vietu",
@@ -171,11 +161,18 @@ locale.lv = {
no_results: "Nevar atrast vietu '{name}'"
},
description: "Apraksts",
geolocate: {
title: "Show My Location"
},
logout: "atslēgties",
report_a_bug: "ziņot par kļūdu",
inspector: {
no_documentation_combination: "Šai apzīmējumu kombinācijai nav piejama dokumetācija",
no_documentation_key: "There is no documentation available for this key",
new_tag: "Jauns apzīmējums",
edit_tags: "Rediģēt apzīmējumus",
okay: "Labi",
view_on_osm: "View on OSM"
},
layerswitcher: {
title: "Fons",
@@ -185,13 +182,46 @@ locale.lv = {
reset: "Pārstatīt"
},
contributors: {
list: "{users} papildinājumi redzami",
truncated_list: "{users} un {count} citu papildinājumi redzami"
restore: {
description: "You have unsaved changes from a previous editing session. Do you wish to restore these changes?",
restore: "Restore",
reset: "Reset"
},
save: {
title: "Saglabāt",
help: "Saglabā izmaiņas, padarot tās redzamas citiem",
error: "Kļūda. Nevarēja saglabāt maiņas",
uploading: "Augšupielādē",
unsaved_changes: "Jums ir nesaglabātas izmaiņas"
},
splash: {
welcome: "Welcome to the iD OpenStreetMap editor",
text: "This is development version {version}. For more information see {website} and report bugs at {github}."
},
source_switch: {
live: "live",
dev: "dev"
},
tag_reference: {
description: "Apraksts",
on_wiki: "{tag} on wiki.osm.org",
used_with: "used with {type}"
},
validations: {
untagged_point: "Neapzīmēts punkts",
untagged_line: "Neapzīmēta līnija",
untagged_area: "Neapzīmēts apgabals",
tag_suggests_area: "Apzīmējums {tag} parasti tiek lietots apgabaliem, bet objekts nav apgabals",
deprecated_tags: "Novecojuši apzīmējumi: {tags}"
},
zoom: {
in: "Pietuvināt",
out: "Attālināt"
}
};
+66 -36
View File
@@ -128,42 +128,32 @@ locale.tr = {
}
},
validations: {
untagged_point: "Herhangi bir çizgi ya da alana bağlantısı olmayan ve etiketlenmemiş bir nokta.",
untagged_line: "Etiketlenmemiş çizgi",
untagged_area: "Etiketlenmemiş alan",
tag_suggests_area: "{tag} etiketi buranın alan olmasını tavsiye ediyor ama alan değil.",
deprecated_tags: "Kullanımdan kaldırılmış etiket : {tags}"
},
save: "Kaydet",
unsaved_changes: "Kaydedilmemiş değişiklikleriniz var",
save_help: "Diğer kullanıcıların yaptığınız değişiklikleri görmesi için OpenStreetMap'e kaydediniz",
no_changes: "Kaydedecek hiçbir değişikliğiniz yok",
save_error: "Kaydederken bir hata oluştu",
uploading_changes: "Değişiklikleriniz OpenStreetMap'e gönderiliyor.",
just_edited: "Şu an OpenStreetMap'de bir değişiklik yaptınız!",
okay: "Tamam",
"zoom-in": "Yaklaş",
"zoom-out": "Uzaklaş",
nothing_to_undo: "Geri alınacak birşey yok.",
nothing_to_redo: "Tekrar yapılacak birşey yok.",
just_edited: "Şu an OpenStreetMap'de bir değişiklik yaptınız!",
browser_notice: "Bu editör sadece Firefox, Chrome, Safari, Opera ile Internet Explorer 9 ve üstü tarayıcılarda çalışmaktadır. Lütfen tarayınıcı güncelleyin ya da Potlatch 2'yi kullanarak haritada güncelleme yapınız.",
view_on_osm: "OSM üstünde Gör",
zoom_in_edit: "Güncelleme yapmak için haritada yakınlaşmalısınız",
logout: "Çıkış",
report_a_bug: "Hata rapor et",
inspector: {
no_documentation_combination: "Bu etiket kombinasyonu için dökümantasyon bulunmamaktadır.",
no_documentation_key: "Bu anahtar için dökümantasyon bulunmamaktadır.",
new_tag: "Yeni Etiket"
commit: {
title: "Save Changes",
description_placeholder: "Brief description of your contributions",
upload_explanation: "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
save: "Save",
cancel: "Cancel",
warnings: "Warnings",
modified: "Modified",
deleted: "Deleted",
created: "Created"
},
view_on_osm: "OSM üstünde Gör",
zoom_in_edit: "Güncelleme yapmak için haritada yakınlaşmalısınız",
edit_tags: "Etiketleri güncelle",
contributors: {
list: "{users} tarafından yapılan katkılar görünmektedir",
truncated_list: "{users} ve diğer {count} tarafından yapılan katkılar görünmektedir"
},
geocoder: {
title: "Bir Yer Bul",
@@ -171,11 +161,18 @@ locale.tr = {
no_results: "'{name}' ismindeki yer bulunamadı"
},
description: "Açıklama",
geolocate: {
title: "Show My Location"
},
logout: "Çıkış",
report_a_bug: "Hata rapor et",
inspector: {
no_documentation_combination: "Bu etiket kombinasyonu için dökümantasyon bulunmamaktadır.",
no_documentation_key: "Bu anahtar için dökümantasyon bulunmamaktadır.",
new_tag: "Yeni Etiket",
edit_tags: "Etiketleri güncelle",
okay: "Tamam",
view_on_osm: "View on OSM"
},
layerswitcher: {
title: "Arkaplan",
@@ -185,13 +182,46 @@ locale.tr = {
reset: "Sıfırla"
},
contributors: {
list: "{users} tarafından yapılan katkılar görünmektedir",
truncated_list: "{users} ve diğer {count} tarafından yapılan katkılar görünmektedir"
restore: {
description: "You have unsaved changes from a previous editing session. Do you wish to restore these changes?",
restore: "Restore",
reset: "Reset"
},
save: {
title: "Kaydet",
help: "Diğer kullanıcıların yaptığınız değişiklikleri görmesi için OpenStreetMap'e kaydediniz",
error: "Kaydederken bir hata oluştu",
uploading: "Değişiklikleriniz OpenStreetMap'e gönderiliyor.",
unsaved_changes: "Kaydedilmemiş değişiklikleriniz var"
},
splash: {
welcome: "Welcome to the iD OpenStreetMap editor",
text: "This is development version {version}. For more information see {website} and report bugs at {github}."
},
source_switch: {
live: "canlı",
dev: "geliştirme"
},
tag_reference: {
description: "Açıklama",
on_wiki: "{tag} on wiki.osm.org",
used_with: "used with {type}"
},
validations: {
untagged_point: "Herhangi bir çizgi ya da alana bağlantısı olmayan ve etiketlenmemiş bir nokta.",
untagged_line: "Etiketlenmemiş çizgi",
untagged_area: "Etiketlenmemiş alan",
tag_suggests_area: "{tag} etiketi buranın alan olmasını tavsiye ediyor ama alan değil.",
deprecated_tags: "Kullanımdan kaldırılmış etiket : {tags}"
},
zoom: {
in: "Yaklaş",
out: "Uzaklaş"
}
};
+7 -6
View File
@@ -63,7 +63,7 @@
<script src='../js/id/ui/inspector.js'></script>
<script src='../js/id/ui/commit.js'></script>
<script src='../js/id/ui/loading.js'></script>
<script src='../js/id/ui/userpanel.js'></script>
<script src='../js/id/ui/account.js'></script>
<script src='../js/id/ui/geocoder.js'></script>
<script src='../js/id/ui/notice.js'></script>
<script src='../js/id/ui/modal.js'></script>
@@ -136,14 +136,15 @@
<script src='../js/id/connection.js'></script>
<script src='../locale/locale.js'></script>
<script src='../locale/en.js'></script>
<script src='../locale/ja.js'></script>
<script src='../locale/fr.js'></script>
<script src='../js/lib/locale.js'></script>
<script src='../locale/da.js'></script>
<script src='../locale/de.js'></script>
<script src='../locale/en.js'></script>
<script src='../locale/es.js'></script>
<script src='../locale/fr.js'></script>
<script src='../locale/ja.js'></script>
<script src='../locale/lv.js'></script>
<script src='../locale/tr.js'></script>
<script src='../locale/es.js'></script>
<script src="spec/spec_helpers.js"></script>
+22 -19
View File
@@ -20,6 +20,8 @@ describe("iD.behavior.Select", function() {
.enter().append('circle')
.attr('class', function(d) { return d.id; });
context.enter(iD.modes.Browse(context));
behavior = iD.behavior.Select(context);
context.install(behavior);
});
@@ -30,32 +32,33 @@ describe("iD.behavior.Select", function() {
container.remove();
});
specify("click on entity selects the entity", function(done) {
happen.mousedown(context.surface().select('.' + a.id).node());
window.setTimeout(function() {
expect(context.selection()).to.eql([a.id]);
done();
}, 600);
specify("click on entity selects the entity", function() {
happen.click(context.surface().select('.' + a.id).node());
expect(context.selection()).to.eql([a.id]);
});
specify("click on empty space clears the selection", function(done) {
specify("click on empty space clears the selection", function() {
context.enter(iD.modes.Select(context, [a.id]));
happen.click(context.surface().node());
happen.mousedown(context.surface().node());
happen.mouseup(context.surface().node());
window.setTimeout(function() {
expect(context.selection()).to.eql([]);
done();
}, 600);
expect(context.mode().id).to.eql('browse');
});
specify("shift-click on entity adds the entity to the selection", function(done) {
specify("shift-click on unselected entity adds it to the selection", function() {
context.enter(iD.modes.Select(context, [a.id]));
happen.mousedown(context.surface().select('.' + b.id).node(), {shiftKey: true});
window.setTimeout(function() {
expect(context.selection()).to.eql([a.id, b.id]);
done();
}, 600);
happen.click(context.surface().select('.' + b.id).node(), {shiftKey: true});
expect(context.selection()).to.eql([a.id, b.id]);
});
specify("shift-click on selected entity removes it from the selection", function() {
context.enter(iD.modes.Select(context, [a.id, b.id]));
happen.click(context.surface().select('.' + b.id).node(), {shiftKey: true});
expect(context.selection()).to.eql([a.id]);
});
specify("shift-click on last selected entity clears the selection", function() {
context.enter(iD.modes.Select(context, [a.id]));
happen.click(context.surface().select('.' + a.id).node(), {shiftKey: true});
expect(context.mode().id).to.eql('browse');
});
specify("shift-click on empty space leaves the selection unchanged", function() {
+2 -1
View File
@@ -27,7 +27,8 @@ describe('translations', function() {
var allkeys = _.flatten(_.values(languageKeys));
_.forEach(languageKeys, function(l, k) {
expect(_.difference(allkeys, l)).to.eql([]);
var diff = _.difference(allkeys, l).join(", ");
expect(diff).to.equal("");
});
});
+2 -2
View File
@@ -1,6 +1,6 @@
describe("iD.ui.geocoder", function () {
describe("iD.ui.Geocoder", function () {
it('can be instantiated', function () {
var geocoder = iD.ui.geocoder();
var geocoder = iD.ui.Geocoder();
expect(geocoder).to.be.ok;
});
});
+2 -2
View File
@@ -1,10 +1,10 @@
describe("iD.ui.inspector", function () {
describe("iD.ui.Inspector", function () {
var inspector, element,
tags = {highway: 'residential'},
entity, graph, context;
function render() {
inspector = iD.ui.inspector().context(context);
inspector = iD.ui.Inspector().context(context);
element = d3.select('body')
.append('div')
.attr('id', 'inspector-wrap')