Merge branch 'master' into messages

This commit is contained in:
Andy Allan 2018-10-03 14:04:12 +02:00 committed by GitHub
commit 5e407dfb34
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
193 changed files with 3218 additions and 1547 deletions

View file

@ -1,5 +1,8 @@
inherit_from: .rubocop_todo.yml
AllCops:
TargetRubyVersion: 2.3
Rails:
Enabled: true
@ -27,6 +30,9 @@ Rails/ApplicationRecord:
Rails/CreateTableWithTimestamps:
Enabled: false
Rails/FindEach:
Enabled: false
Rails/HasManyOrHasOneDependent:
Enabled: false

View file

@ -1,23 +1,11 @@
# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2018-06-19 09:02:55 +0100 using RuboCop version 0.57.2.
# on 2018-09-19 14:24:02 +0100 using RuboCop version 0.58.2.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
# Offense count: 34
Lint/AmbiguousOperator:
Exclude:
- 'test/controllers/amf_controller_test.rb'
- 'test/controllers/changeset_controller_test.rb'
- 'test/lib/bounding_box_test.rb'
- 'test/lib/country_test.rb'
# Offense count: 96
Lint/AmbiguousRegexpLiteral:
Enabled: false
# Offense count: 32
# Configuration parameters: AllowSafeAssignment.
Lint/AssignmentInCondition:
@ -42,17 +30,13 @@ Lint/HandleExceptions:
- 'app/controllers/amf_controller.rb'
- 'app/controllers/user_controller.rb'
# Offense count: 2
Lint/ShadowingOuterLocalVariable:
Exclude:
- 'app/views/changeset/list.atom.builder'
# Offense count: 690
# Offense count: 692
Metrics/AbcSize:
Max: 280
# Offense count: 41
# Offense count: 40
# Configuration parameters: CountComments, ExcludedMethods.
# ExcludedMethods: refine
Metrics/BlockLength:
Max: 262
@ -70,7 +54,7 @@ Metrics/ClassLength:
Metrics/CyclomaticComplexity:
Max: 20
# Offense count: 688
# Offense count: 691
# Configuration parameters: CountComments.
Metrics/MethodLength:
Max: 179
@ -85,7 +69,7 @@ Metrics/ModuleLength:
Metrics/ParameterLists:
Max: 9
# Offense count: 71
# Offense count: 72
Metrics/PerceivedComplexity:
Max: 23
@ -178,10 +162,17 @@ Style/AsciiComments:
Exclude:
- 'test/models/message_test.rb'
# Offense count: 229
# Offense count: 230
Style/Documentation:
Enabled: false
# Offense count: 462
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
# SupportedStyles: when_needed, always, never
Style/FrozenStringLiteralComment:
Enabled: false
# Offense count: 2
# Cop supports --auto-correct.
Style/IfUnlessModifier:
@ -194,7 +185,7 @@ Style/IfUnlessModifier:
Style/NumericLiterals:
MinDigits: 11
# Offense count: 3064
# Offense count: 3080
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
# URISchemes: http, https
Metrics/LineLength:

View file

@ -2,7 +2,7 @@ GEM
remote: https://rubygems.org/
specs:
SystemTimer (1.2.3)
aasm (5.0.0)
aasm (5.0.1)
concurrent-ruby (~> 1.0)
actioncable (5.2.0)
actionpack (= 5.2.0)
@ -63,7 +63,7 @@ GEM
bigdecimal (1.1.0)
binding_of_caller (0.8.0)
debug_inspector (>= 0.0.1)
bootsnap (1.3.1)
bootsnap (1.3.2)
msgpack (~> 1.0)
builder (3.2.3)
canonical-rails (0.2.4)
@ -104,10 +104,10 @@ GEM
erubi (1.7.1)
execjs (2.7.0)
exifr (1.3.4)
factory_bot (4.11.0)
factory_bot (4.11.1)
activesupport (>= 3.0.0)
factory_bot_rails (4.11.0)
factory_bot (~> 4.11.0)
factory_bot_rails (4.11.1)
factory_bot (~> 4.11.1)
railties (>= 3.0.0)
faraday (0.12.2)
multipart-post (>= 1.2, < 3)
@ -169,7 +169,7 @@ GEM
nokogiri (>= 1.5.9)
mail (2.7.0)
mini_mime (>= 0.1.1)
marcel (0.3.2)
marcel (0.3.3)
mimemagic (~> 0.3.2)
method_source (0.9.0)
mime-types (3.2.2)
@ -301,7 +301,7 @@ GEM
rack (>= 1.4)
rinku (2.0.4)
rotp (3.3.1)
rubocop (0.58.2)
rubocop (0.59.1)
jaro_winkler (~> 1.5.1)
parallel (~> 1.10)
parser (>= 2.5, != 2.5.1.1)
@ -317,7 +317,7 @@ GEM
crass (~> 1.0.2)
nokogiri (>= 1.4.4)
nokogumbo (~> 1.4)
sass (3.5.7)
sass (3.6.0)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
@ -358,7 +358,7 @@ GEM
tins (1.16.3)
tzinfo (1.2.5)
thread_safe (~> 0.1)
uglifier (4.1.18)
uglifier (4.1.19)
execjs (>= 0.3.0, < 3)
unicode-display_width (1.4.0)
validates_email_format_of (1.6.3)

View file

@ -5,7 +5,7 @@ If you want to deploy the software for your own project, then see the notes at t
You can install the software directly on your machine, which is the traditional and probably best-supported approach. However, there is an alternative which may be easier: Vagrant. This installs the software into a virtual machine, which makes it easier to get a consistent development environment and may avoid installation difficulties. For Vagrant instructions, see [VAGRANT.md](VAGRANT.md).
These instructions are based on Ubuntu 12.04 LTS, which is the platform used by the OSMF servers.
These instructions are based on Ubuntu 16.04 LTS, which is the platform used by the OSMF servers.
The instructions also work, with only minor amendments, for all other current Ubuntu releases, Fedora and MacOSX
We don't recommend attempting to develop or deploy this software on Windows. If you need to use Windows, then try developing this software using Ubuntu in a virtual machine, or use [Vagrant](VAGRANT.md).

17
Vagrantfile vendored
View file

@ -4,23 +4,26 @@
Vagrant.configure("2") do |config|
# use official ubuntu image for virtualbox
config.vm.provider "virtualbox" do |vb, override|
override.vm.box = "ubuntu/xenial64"
override.vm.box = "ubuntu/bionic64"
override.vm.synced_folder ".", "/srv/openstreetmap-website"
vb.customize ["modifyvm", :id, "--memory", "1024"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
vb.customize ["modifyvm", :id, "--uartmode1", "disconnected"]
end
# use third party image and NFS sharing for lxc
# Use sshfs sharing if available, otherwise NFS sharing
sharing_type = Vagrant.has_plugin?("vagrant-sshfs") ? "sshfs" : "nfs"
# use third party image and sshfs or NFS sharing for lxc
config.vm.provider "lxc" do |_, override|
override.vm.box = "generic/ubuntu1604"
override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => "nfs"
override.vm.box = "generic/ubuntu1804"
override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => sharing_type
end
# use third party image and NFS sharing for libvirt
# use third party image and sshfs or NFS sharing for libvirt
config.vm.provider "libvirt" do |_, override|
override.vm.box = "generic/ubuntu1604"
override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => "nfs"
override.vm.box = "generic/ubuntu1804"
override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => sharing_type
end
# configure shared package cache if possible

View file

@ -11,13 +11,13 @@ folder 'vendor/assets' do
end
folder 'leaflet' do
file 'leaflet.js', 'https://unpkg.com/leaflet@1.3.3/dist/leaflet-src.js'
file 'leaflet.css', 'https://unpkg.com/leaflet@1.3.3/dist/leaflet.css'
file 'leaflet.js', 'https://unpkg.com/leaflet@1.3.4/dist/leaflet-src.js'
file 'leaflet.css', 'https://unpkg.com/leaflet@1.3.4/dist/leaflet.css'
[ 'layers.png', 'layers-2x.png',
'marker-icon.png', 'marker-icon-2x.png',
'marker-shadow.png' ].each do |image|
file "images/#{image}", "https://unpkg.com/leaflet@1.3.3/dist/images/#{image}"
file "images/#{image}", "https://unpkg.com/leaflet@1.3.4/dist/images/#{image}"
end
from 'git://github.com/aratcliffe/Leaflet.contextmenu.git', :tag => 'v1.5.0' do
@ -69,7 +69,7 @@ folder 'vendor/assets' do
folder 'javascripts' do
file 'html5shiv.js', 'https://raw.githubusercontent.com/aFarkas/html5shiv/master/src/html5shiv.js'
file 'bowser.js', 'https://github.com/lancedikson/bowser/releases/download/1.9.3/bowser.js'
file 'bowser.js', 'https://github.com/lancedikson/bowser/releases/download/1.9.4/bowser.js'
end
folder 'swfobject' do

View file

@ -187,12 +187,12 @@ $(document).ready(function () {
$.cookie('_osm_location', OSM.locationCookie(map), { expires: expiry, path: '/' });
});
if ($.cookie('_osm_welcome') === 'hide') {
$('.welcome').hide();
if ($.cookie('_osm_welcome') !== 'hide') {
$('.welcome').addClass('visible');
}
$('.welcome .close-wrap').on('click', function() {
$('.welcome').hide();
$('.welcome').removeClass('visible');
$.cookie('_osm_welcome', 'hide', { expires: expiry, path: '/' });
});

View file

@ -61,6 +61,12 @@ L.OSM.Map = L.Map.extend({
code: "G",
name: I18n.t("javascripts.map.base.gps")
});
this.on("layeradd", function (event) {
if (this.baseLayers.indexOf(event.layer) >= 0) {
this.setMaxZoom(event.layer.options.maxZoom);
}
});
},
updateLayers: function(layerParam) {

View file

@ -611,11 +611,18 @@ body.compact {
height: auto;
overflow: hidden;
#banner,
.welcome {
#banner {
display: block;
}
.welcome {
display: none;
&.visible {
display: block;
}
}
#sidebar_content {
display: none;
}
@ -971,6 +978,8 @@ header .search_forms,
img.button {
display: block;
width: 20px;
height: 20px;
}
span.force_width {
@ -1501,7 +1510,7 @@ tr.turn:hover {
/* Rules for the trace view */
.trace-view {
.trace-show {
.trace_pending {
color: red;
}
@ -1585,7 +1594,7 @@ tr.turn:hover {
margin-left: 70px;
}
.user-view {
.user-show {
// Silly exception; remove when user page is redesigned.
.content-inner {
max-width: none;
@ -1712,7 +1721,7 @@ tr.turn:hover {
}
}
.diary_entry-view img.user_thumbnail {
.diary_entry-show img.user_thumbnail {
float: left;
}

View file

@ -126,9 +126,12 @@ body.small {
}
}
#sidebar .welcome,
#sidebar #banner {
display: none !important;
.overlay-sidebar #sidebar .welcome.visible {
display: none;
}
.overlay-sidebar #sidebar #banner {
display: none;
}
.leaflet-top.leaflet-right {

View file

@ -143,6 +143,7 @@ class AmfController < ApplicationController
if cstags
return -1, "One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1." unless tags_ok(cstags)
cstags = strip_non_xml_chars cstags
end
@ -471,7 +472,7 @@ class AmfController < ApplicationController
return -1, t("application.setup_user_auth.blocked") if user.blocks.active.exists?
query = Trace.visible_to(user)
query = if searchterm.to_i > 0
query = if searchterm.to_i.positive?
query.where(:id => searchterm.to_i)
else
query.where("MATCH(name) AGAINST (?)", searchterm).limit(21)
@ -497,6 +498,7 @@ class AmfController < ApplicationController
rel = Relation.where(:id => relid).first
return [-4, "relation", relid] if rel.nil? || !rel.visible
[0, "", relid, rel.tags, rel.members, rel.version]
end
end
@ -506,9 +508,9 @@ class AmfController < ApplicationController
def findrelations(searchterm)
rels = []
if searchterm.to_i > 0
if searchterm.to_i.positive?
rel = Relation.where(:id => searchterm.to_i).first
rels.push([rel.id, rel.tags, rel.members, rel.version]) if rel && rel.visible
rels.push([rel.id, rel.tags, rel.members, rel.version]) if rel&.visible
else
RelationTag.where("v like ?", "%#{searchterm}%").limit(11).each do |t|
rels.push([t.relation.id, t.relation.tags, t.relation.members, t.relation.version]) if t.relation.visible
@ -533,6 +535,7 @@ class AmfController < ApplicationController
return -1, "You must accept the contributor terms before you can edit." if REQUIRE_TERMS_AGREED && user.terms_agreed.nil?
return -1, "One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1." unless tags_ok(tags)
tags = strip_non_xml_chars tags
relid = relid.to_i
@ -542,7 +545,7 @@ class AmfController < ApplicationController
relation = nil
Relation.transaction do
# create a new relation, or find the existing one
relation = Relation.find(relid) if relid > 0
relation = Relation.find(relid) if relid.positive?
# We always need a new node, based on the data that has been sent to us
new_relation = Relation.new
@ -550,7 +553,7 @@ class AmfController < ApplicationController
typedmembers = []
members.each do |m|
mid = m[1].to_i
if mid < 0
if mid.negative?
mid = renumberednodes[mid] if m[0] == "Node"
mid = renumberedways[mid] if m[0] == "Way"
end
@ -622,6 +625,7 @@ class AmfController < ApplicationController
return -2, "Server error - way is only #{pointlist.length} points long." if pointlist.length < 2
return -1, "One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1." unless tags_ok(attributes)
attributes = strip_non_xml_chars attributes
originalway = originalway.to_i
@ -651,6 +655,7 @@ class AmfController < ApplicationController
# fixup node tags in a way as well
return -1, "One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1." unless tags_ok(node.tags)
node.tags = strip_non_xml_chars node.tags
node.tags.delete("created_by")
@ -728,6 +733,7 @@ class AmfController < ApplicationController
return -1, "You must accept the contributor terms before you can edit." if REQUIRE_TERMS_AGREED && user.terms_agreed.nil?
return -1, "One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1." unless tags_ok(tags)
tags = strip_non_xml_chars tags
id = id.to_i
@ -735,7 +741,7 @@ class AmfController < ApplicationController
node = nil
new_node = nil
Node.transaction do
if id > 0
if id.positive?
begin
node = Node.find(id)
rescue ActiveRecord::RecordNotFound
@ -883,13 +889,11 @@ class AmfController < ApplicationController
# in the +tags+ hash.
def strip_non_xml_chars(tags)
new_tags = {}
unless tags.nil?
tags.each do |k, v|
tags&.each do |k, v|
new_k = k.delete "\000-\037\ufffe\uffff", "^\011\012\015"
new_v = v.delete "\000-\037\ufffe\uffff", "^\011\012\015"
new_tags[new_k] = new_v
end
end
new_tags
end

View file

@ -283,8 +283,7 @@ class ApplicationController < ActionController::Base
# TODO: some sort of escaping of problem characters in the message
response.headers["Error"] = message
if request.headers["X-Error-Format"] &&
request.headers["X-Error-Format"].casecmp("xml").zero?
if request.headers["X-Error-Format"]&.casecmp("xml")&.zero?
result = OSM::API.new.get_xml_doc
result.root.name = "osmError"
result.root << (XML::Node.new("status") << "#{Rack::Utils.status_code(status)} #{Rack::Utils::HTTP_STATUS_CODES[status]}")
@ -310,7 +309,7 @@ class ApplicationController < ActionController::Base
helper_method :preferred_languages
def set_locale(reset = false)
if current_user && current_user.languages.empty? && !http_accept_language.user_preferred_languages.empty?
if current_user&.languages&.empty? && !http_accept_language.user_preferred_languages.empty?
current_user.languages = http_accept_language.user_preferred_languages
current_user.save
end
@ -435,7 +434,7 @@ class ApplicationController < ActionController::Base
def preferred_editor
editor = if params[:editor]
params[:editor]
elsif current_user && current_user.preferred_editor
elsif current_user&.preferred_editor
current_user.preferred_editor
else
DEFAULT_EDITOR

View file

@ -58,7 +58,7 @@ class BrowseController < ApplicationController
def changeset
@type = "changeset"
@changeset = Changeset.find(params[:id])
@comments = if current_user && current_user.moderator?
@comments = if current_user&.moderator?
@changeset.comments.unscope(:where => :visible).includes(:author)
else
@changeset.comments.includes(:author)
@ -77,7 +77,7 @@ class BrowseController < ApplicationController
def note
@type = "note"
if current_user && current_user.moderator?
if current_user&.moderator?
@note = Note.find(params[:id])
@note_comments = @note.comments.unscope(:where => :visible)
else

View file

@ -4,19 +4,19 @@ class ChangesetController < ApplicationController
layout "site"
require "xml/libxml"
skip_before_action :verify_authenticity_token, :except => [:list]
before_action :authorize_web, :only => [:list, :feed, :comments_feed]
before_action :set_locale, :only => [:list, :feed, :comments_feed]
skip_before_action :verify_authenticity_token, :except => [:index]
before_action :authorize_web, :only => [:index, :feed, :comments_feed]
before_action :set_locale, :only => [:index, :feed, :comments_feed]
before_action :authorize, :only => [:create, :update, :upload, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
before_action :require_moderator, :only => [:hide_comment, :unhide_comment]
before_action :require_allow_write_api, :only => [:create, :update, :upload, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
before_action :require_public_data, :only => [:create, :update, :upload, :close, :comment, :subscribe, :unsubscribe]
before_action :check_api_writable, :only => [:create, :update, :upload, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
before_action :check_api_readable, :except => [:create, :update, :upload, :download, :query, :list, :feed, :comment, :subscribe, :unsubscribe, :comments_feed]
before_action(:only => [:list, :feed, :comments_feed]) { |c| c.check_database_readable(true) }
around_action :api_call_handle_error, :except => [:list, :feed, :comments_feed]
around_action :api_call_timeout, :except => [:list, :feed, :comments_feed, :upload]
around_action :web_timeout, :only => [:list, :feed, :comments_feed]
before_action :check_api_readable, :except => [:create, :update, :upload, :download, :query, :index, :feed, :comment, :subscribe, :unsubscribe, :comments_feed]
before_action(:only => [:index, :feed, :comments_feed]) { |c| c.check_database_readable(true) }
around_action :api_call_handle_error, :except => [:index, :feed, :comments_feed]
around_action :api_call_timeout, :except => [:index, :feed, :comments_feed, :upload]
around_action :web_timeout, :only => [:index, :feed, :comments_feed]
# Helper methods for checking consistency
include ConsistencyValidations
@ -255,7 +255,7 @@ class ChangesetController < ApplicationController
##
# list non-empty changesets in reverse chronological order
def list
def index
@params = params.permit(:display_name, :bbox, :friends, :nearby, :max_id, :list)
if request.format == :atom && @params[:max_id]
@ -300,14 +300,14 @@ class ChangesetController < ApplicationController
@edits = changesets.order("changesets.id DESC").limit(20).preload(:user, :changeset_tags, :comments)
render :action => :list, :layout => false
render :action => :index, :layout => false
end
end
##
# list edits as an atom feed
def feed
list
index
end
##
@ -481,6 +481,7 @@ class ChangesetController < ApplicationController
u = if name.nil?
# user input checking, we don't have any UIDs < 1
raise OSM::APIBadUserInput, "invalid user ID" if user.to_i < 1
u = User.find(user.to_i)
else
u = User.find_by(:display_name => name)
@ -581,7 +582,7 @@ class ChangesetController < ApplicationController
# Get the maximum number of comments to return
def comments_limit
if params[:limit]
if params[:limit].to_i > 0 && params[:limit].to_i <= 10000
if params[:limit].to_i.positive? && params[:limit].to_i <= 10000
params[:limit].to_i
else
raise OSM::APIBadUserInput, "Comments limit must be between 1 and 10000"

View file

@ -4,11 +4,11 @@ class DiaryEntryController < ApplicationController
before_action :authorize_web
before_action :set_locale
before_action :require_user, :only => [:new, :edit, :comment, :hide, :hidecomment, :subscribe, :unsubscribe]
before_action :lookup_user, :only => [:view, :comments]
before_action :lookup_user, :only => [:show, :comments]
before_action :check_database_readable
before_action :check_database_writable, :only => [:new, :edit, :comment, :hide, :hidecomment, :subscribe, :unsubscribe]
before_action :require_administrator, :only => [:hide, :hidecomment]
before_action :allow_thirdparty_images, :only => [:new, :edit, :list, :view, :comments]
before_action :allow_thirdparty_images, :only => [:new, :edit, :index, :show, :comments]
def new
@title = t "diary_entry.new.title"
@ -29,7 +29,7 @@ class DiaryEntryController < ApplicationController
# Subscribe user to diary comments
@diary_entry.subscriptions.create(:user => current_user)
redirect_to :action => "list", :display_name => current_user.display_name
redirect_to :action => "index", :display_name => current_user.display_name
else
render :action => "edit"
end
@ -47,9 +47,9 @@ class DiaryEntryController < ApplicationController
@diary_entry = DiaryEntry.find(params[:id])
if current_user != @diary_entry.user
redirect_to :action => "view", :id => params[:id]
redirect_to diary_entry_path(@diary_entry.user, @diary_entry)
elsif params[:diary_entry] && @diary_entry.update(entry_params)
redirect_to :action => "view", :id => params[:id]
redirect_to diary_entry_path(@diary_entry.user, @diary_entry)
end
set_map_location
@ -71,9 +71,9 @@ class DiaryEntryController < ApplicationController
# Add the commenter to the subscribers if necessary
@entry.subscriptions.create(:user => current_user) unless @entry.subscribers.exists?(current_user.id)
redirect_to :action => "view", :display_name => @entry.user.display_name, :id => @entry.id
redirect_to diary_entry_path(@entry.user, @entry)
else
render :action => "view"
render :action => "show"
end
rescue ActiveRecord::RecordNotFound
render :action => "no_such_entry", :status => :not_found
@ -84,7 +84,7 @@ class DiaryEntryController < ApplicationController
diary_entry.subscriptions.create(:user => current_user) unless diary_entry.subscribers.exists?(current_user.id)
redirect_to :action => "view", :display_name => diary_entry.user.display_name, :id => diary_entry.id
redirect_to diary_entry_path(diary_entry.user, diary_entry)
rescue ActiveRecord::RecordNotFound
render :action => "no_such_entry", :status => :not_found
end
@ -94,17 +94,17 @@ class DiaryEntryController < ApplicationController
diary_entry.subscriptions.where(:user => current_user).delete_all if diary_entry.subscribers.exists?(current_user.id)
redirect_to :action => "view", :display_name => diary_entry.user.display_name, :id => diary_entry.id
redirect_to diary_entry_path(diary_entry.user, diary_entry)
rescue ActiveRecord::RecordNotFound
render :action => "no_such_entry", :status => :not_found
end
def list
def index
if params[:display_name]
@user = User.active.find_by(:display_name => params[:display_name])
if @user
@title = t "diary_entry.list.user_title", :user => @user.display_name
@title = t "diary_entry.index.user_title", :user => @user.display_name
@entries = @user.diary_entries
else
render_unknown_user params[:display_name]
@ -112,7 +112,7 @@ class DiaryEntryController < ApplicationController
end
elsif params[:friends]
if current_user
@title = t "diary_entry.list.title_friends"
@title = t "diary_entry.index.title_friends"
@entries = DiaryEntry.where(:user_id => current_user.friend_users)
else
require_user
@ -120,7 +120,7 @@ class DiaryEntryController < ApplicationController
end
elsif params[:nearby]
if current_user
@title = t "diary_entry.list.title_nearby"
@title = t "diary_entry.index.title_nearby"
@entries = DiaryEntry.where(:user_id => current_user.nearby)
else
require_user
@ -130,10 +130,10 @@ class DiaryEntryController < ApplicationController
@entries = DiaryEntry.joins(:user).where(:users => { :status => %w[active confirmed] })
if params[:language]
@title = t "diary_entry.list.in_language_title", :language => Language.find(params[:language]).english_name
@title = t "diary_entry.index.in_language_title", :language => Language.find(params[:language]).english_name
@entries = @entries.where(:language_code => params[:language])
else
@title = t "diary_entry.list.title"
@title = t "diary_entry.index.title"
end
end
@ -157,7 +157,7 @@ class DiaryEntryController < ApplicationController
@entries = user.diary_entries
@title = t("diary_entry.feed.user.title", :user => user.display_name)
@description = t("diary_entry.feed.user.description", :user => user.display_name)
@link = url_for :controller => "diary_entry", :action => "list", :display_name => user.display_name, :host => SERVER_URL, :protocol => SERVER_PROTOCOL
@link = url_for :controller => "diary_entry", :action => "index", :display_name => user.display_name, :host => SERVER_URL, :protocol => SERVER_PROTOCOL
else
head :not_found
return
@ -169,21 +169,21 @@ class DiaryEntryController < ApplicationController
@entries = @entries.where(:language_code => params[:language])
@title = t("diary_entry.feed.language.title", :language_name => Language.find(params[:language]).english_name)
@description = t("diary_entry.feed.language.description", :language_name => Language.find(params[:language]).english_name)
@link = url_for :controller => "diary_entry", :action => "list", :language => params[:language], :host => SERVER_URL, :protocol => SERVER_PROTOCOL
@link = url_for :controller => "diary_entry", :action => "index", :language => params[:language], :host => SERVER_URL, :protocol => SERVER_PROTOCOL
else
@title = t("diary_entry.feed.all.title")
@description = t("diary_entry.feed.all.description")
@link = url_for :controller => "diary_entry", :action => "list", :host => SERVER_URL, :protocol => SERVER_PROTOCOL
@link = url_for :controller => "diary_entry", :action => "index", :host => SERVER_URL, :protocol => SERVER_PROTOCOL
end
end
@entries = @entries.visible.includes(:user).order("created_at DESC").limit(20)
end
def view
def show
@entry = @user.diary_entries.visible.where(:id => params[:id]).first
if @entry
@title = t "diary_entry.view.title", :user => params[:display_name], :title => @entry.title
@title = t "diary_entry.show.title", :user => params[:display_name], :title => @entry.title
else
@title = t "diary_entry.no_such_entry.title", :id => params[:id]
render :action => "no_such_entry", :status => :not_found
@ -193,13 +193,13 @@ class DiaryEntryController < ApplicationController
def hide
entry = DiaryEntry.find(params[:id])
entry.update(:visible => false)
redirect_to :action => "list", :display_name => entry.user.display_name
redirect_to :action => "index", :display_name => entry.user.display_name
end
def hidecomment
comment = DiaryComment.find(params[:comment])
comment.update(:visible => false)
redirect_to :action => "view", :display_name => comment.diary_entry.user.display_name, :id => comment.diary_entry.id
redirect_to diary_entry_path(comment.diary_entry.user, comment.diary_entry)
end
def comments
@ -235,7 +235,7 @@ class DiaryEntryController < ApplicationController
def require_administrator
unless current_user.administrator?
flash[:error] = t("user.filter.not_an_administrator")
redirect_to :action => "view"
redirect_to :action => "show"
end
end

View file

@ -18,7 +18,7 @@ class IssuesController < ApplicationController
@issues = Issue.visible_to(current_user)
# If search
if params[:search_by_user] && params[:search_by_user].present?
if params[:search_by_user]&.present?
@find_user = User.find_by(:display_name => params[:search_by_user])
if @find_user
@issues = @issues.where(:reported_user_id => @find_user.id)
@ -28,11 +28,11 @@ class IssuesController < ApplicationController
end
end
@issues = @issues.where(:status => params[:status]) if params[:status] && params[:status].present?
@issues = @issues.where(:status => params[:status]) if params[:status]&.present?
@issues = @issues.where(:reportable_type => params[:issue_type]) if params[:issue_type] && params[:issue_type].present?
@issues = @issues.where(:reportable_type => params[:issue_type]) if params[:issue_type]&.present?
if params[:last_updated_by] && params[:last_updated_by].present?
if params[:last_updated_by]&.present?
last_updated_by = params[:last_updated_by].to_s == "nil" ? nil : params[:last_updated_by].to_i
@issues = @issues.where(:updated_by => last_updated_by)
end

View file

@ -54,6 +54,7 @@ class NodeController < ApplicationController
new_node = Node.from_xml(request.raw_post)
raise OSM::APIBadUserInput, "The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})" unless new_node && new_node.id == node.id
node.delete_with_history!(new_node, current_user)
render :plain => node.version.to_s
end
@ -65,6 +66,7 @@ class NodeController < ApplicationController
ids = params["nodes"].split(",").collect(&:to_i)
raise OSM::APIBadUserInput, "No nodes were given to search for" if ids.empty?
doc = OSM::API.new.get_xml_doc
Node.find(ids).each do |node|

View file

@ -211,7 +211,7 @@ class NotesController < ApplicationController
# Find the note and check it is valid
@note = Note.find(params[:id])
raise OSM::APINotFoundError unless @note
raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? || (current_user && current_user.moderator?)
raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? || current_user&.moderator?
# Render the result
respond_to do |format|
@ -286,7 +286,7 @@ class NotesController < ApplicationController
@page = (params[:page] || 1).to_i
@page_size = 10
@notes = @user.notes
@notes = @notes.visible unless current_user && current_user.moderator?
@notes = @notes.visible unless current_user&.moderator?
@notes = @notes.order("updated_at DESC, id").distinct.offset((@page - 1) * @page_size).limit(@page_size).preload(:comments => :author).to_a
else
@title = t "user.no_such_user.title"
@ -307,7 +307,7 @@ class NotesController < ApplicationController
# Get the maximum number of results to return
def result_limit
if params[:limit]
if params[:limit].to_i > 0 && params[:limit].to_i <= 10000
if params[:limit].to_i.positive? && params[:limit].to_i <= 10000
params[:limit].to_i
else
raise OSM::APIBadUserInput, "Note limit must be between 1 and 10000"
@ -327,9 +327,9 @@ class NotesController < ApplicationController
7
end
if closed_since < 0
if closed_since.negative?
notes.where.not(:status => "hidden")
elsif closed_since > 0
elsif closed_since.positive?
notes.where(:status => "open")
.or(notes.where(:status => "closed")
.where(notes.arel_table[:closed_at].gt(Time.now - closed_since.days)))

View file

@ -70,6 +70,6 @@ class OldController < ApplicationController
private
def show_redactions?
current_user && current_user.moderator? && params[:show_redactions] == "true"
current_user&.moderator? && params[:show_redactions] == "true"
end
end

View file

@ -92,8 +92,8 @@ class TracesController < ApplicationController
def show
@trace = Trace.find(params[:id])
if @trace && @trace.visible? &&
(@trace.public? || @trace.user == current_user)
if @trace&.visible? &&
(@trace&.public? || @trace&.user == current_user)
@title = t ".title", :name => @trace.name
else
flash[:error] = t ".trace_not_found"
@ -318,7 +318,7 @@ class TracesController < ApplicationController
visibility = params[:visibility]
if visibility.nil?
visibility = if params[:public] && params[:public].to_i.nonzero?
visibility = if params[:public]&.to_i&.nonzero?
"public"
else
"private"

View file

@ -14,11 +14,11 @@ class UserController < ApplicationController
before_action :require_allow_read_prefs, :only => [:api_details]
before_action :require_allow_read_gpx, :only => [:api_gpx_files]
before_action :require_cookies, :only => [:new, :login, :confirm]
before_action :require_administrator, :only => [:set_status, :delete, :list]
before_action :require_administrator, :only => [:set_status, :delete, :index]
around_action :api_call_handle_error, :only => [:api_read, :api_users, :api_details, :api_gpx_files]
before_action :lookup_user_by_id, :only => [:api_read]
before_action :lookup_user_by_name, :only => [:set_status, :delete]
before_action :allow_thirdparty_images, :only => [:view, :account]
before_action :allow_thirdparty_images, :only => [:show, :account]
def terms
@legale = params[:legale] || OSM.ip_to_country(request.remote_ip) || DEFAULT_LEGALE
@ -29,7 +29,7 @@ class UserController < ApplicationController
else
@title = t "user.terms.title"
if current_user && current_user.terms_agreed?
if current_user&.terms_agreed?
# Already agreed to terms, so just show settings
redirect_to :action => :account, :display_name => current_user.display_name
elsif current_user.nil? && session[:new_user].nil?
@ -276,7 +276,7 @@ class UserController < ApplicationController
if params[:session] == session.id
if session[:token]
token = UserToken.find_by(:token => session[:token])
token.destroy if token
token&.destroy
session.delete(:token)
end
session.delete(:user)
@ -292,7 +292,7 @@ class UserController < ApplicationController
def confirm
if request.post?
token = UserToken.find_by(:token => params[:confirm_string])
if token && token.user.active?
if token&.user&.active?
flash[:error] = t("user.confirm.already active")
redirect_to :action => "login"
elsif !token || token.expired?
@ -349,7 +349,7 @@ class UserController < ApplicationController
def confirm_email
if request.post?
token = UserToken.find_by(:token => params[:confirm_string])
if token && token.user.new_email?
if token&.user&.new_email?
self.current_user = token.user
current_user.email = current_user.new_email
current_user.new_email = nil
@ -409,11 +409,11 @@ class UserController < ApplicationController
render :xml => doc.to_s
end
def view
def show
@user = User.find_by(:display_name => params[:display_name])
if @user &&
(@user.visible? || (current_user && current_user.administrator?))
(@user.visible? || (current_user&.administrator?))
@title = @user.display_name
else
render_unknown_user params[:display_name]
@ -440,7 +440,7 @@ class UserController < ApplicationController
if params[:referer]
redirect_to params[:referer]
else
redirect_to :action => "view"
redirect_to :action => "show"
end
end
else
@ -463,7 +463,7 @@ class UserController < ApplicationController
if params[:referer]
redirect_to params[:referer]
else
redirect_to :action => "view"
redirect_to :action => "show"
end
end
else
@ -476,19 +476,19 @@ class UserController < ApplicationController
def set_status
@user.status = params[:status]
@user.save
redirect_to :action => "view", :display_name => params[:display_name]
redirect_to user_path(:display_name => params[:display_name])
end
##
# delete a user, marking them as deleted and removing personal data
def delete
@user.delete
redirect_to :action => "view", :display_name => params[:display_name]
redirect_to user_path(:display_name => params[:display_name])
end
##
# display a list of users matching specified criteria
def list
def index
if request.post?
ids = params[:user].keys.collect(&:to_i)
@ -552,7 +552,7 @@ class UserController < ApplicationController
if user.nil? && provider == "google"
openid_url = auth_info[:extra][:id_info]["openid_id"]
user = User.find_by(:auth_provider => "openid", :auth_uid => openid_url) if openid_url
user.update(:auth_provider => provider, :auth_uid => uid) if user
user&.update(:auth_provider => provider, :auth_uid => uid)
end
if user
@ -757,7 +757,7 @@ class UserController < ApplicationController
flash[:error] = t("user.filter.not_an_administrator")
if params[:display_name]
redirect_to :action => "view", :display_name => params[:display_name]
redirect_to user_path(:display_name => params[:display_name])
else
redirect_to :action => "login", :referer => request.fullpath
end
@ -826,6 +826,7 @@ class UserController < ApplicationController
def gravatar_enable(user)
# code from example https://en.gravatar.com/site/implement/images/ruby/
return false if user.image.present?
hash = Digest::MD5.hexdigest(user.email.downcase)
url = "https://www.gravatar.com/avatar/#{hash}?d=404" # without d=404 we will always get an image back
response = OSM.http_client.get(URI.parse(url))

View file

@ -26,7 +26,7 @@ module BannerHelper
# rotate all banner queue positions
index = cval.to_i
cookies[ckey] = index - 1 if index > 0
cookies[ckey] = index - 1 if index.positive?
# pick banner with mininum queue position
next if index > min_index

View file

@ -3,7 +3,7 @@ module ChangesetHelper
if changeset.user.status == "deleted"
t("user.no_such_user.deleted")
elsif changeset.user.data_public?
link_to(changeset.user.display_name, user_path(changeset.user.display_name))
link_to(changeset.user.display_name, user_path(changeset.user))
else
t("browse.anonymous")
end
@ -32,15 +32,15 @@ module ChangesetHelper
end
end
def changeset_list_title(params, user)
def changeset_index_title(params, user)
if params[:friends] && user
t "changeset.list.title_friend"
t "changeset.index.title_friend"
elsif params[:nearby] && user
t "changeset.list.title_nearby"
t "changeset.index.title_nearby"
elsif params[:display_name]
t "changeset.list.title_user", :user => params[:display_name]
t "changeset.index.title_user", :user => params[:display_name]
else
t "changeset.list.title"
t "changeset.index.title"
end
end
end

View file

@ -2,11 +2,11 @@ module IssuesHelper
def reportable_url(reportable)
case reportable
when DiaryEntry
url_for(:controller => reportable.class.name.underscore, :action => :view, :display_name => reportable.user.display_name, :id => reportable.id)
diary_entry_url(reportable.user, reportable)
when User
url_for(:controller => reportable.class.name.underscore, :action => :view, :display_name => reportable.display_name)
user_url(reportable)
when DiaryComment
url_for(:controller => reportable.diary_entry.class.name.underscore, :action => :view, :display_name => reportable.diary_entry.user.display_name, :id => reportable.diary_entry.id, :anchor => "comment#{reportable.id}")
diary_entry_url(reportable.diary_entry.user, reportable.diary_entry, :anchor => "comment#{reportable.id}")
when Note
url_for(:controller => :browse, :action => :note, :id => reportable.id)
end
@ -29,7 +29,7 @@ module IssuesHelper
count = Issue.visible_to(current_user).open.limit(100).size
if count > 99
content_tag(:span, "99+", :class => "count-number")
elsif count > 0
elsif count.positive?
content_tag(:span, count, :class => "count-number")
end
end

View file

@ -18,7 +18,7 @@ module NoteHelper
elsif author.status == "deleted"
t("user.no_such_user.deleted")
else
link_to h(author.display_name), link_options.merge(:controller => "user", :action => "view", :display_name => author.display_name)
link_to h(author.display_name), link_options.merge(:controller => "user", :action => "show", :display_name => author.display_name)
end
end
end

View file

@ -29,6 +29,6 @@ module NotifierHelper
# Because we can't use stylesheets in HTML emails, we need to inline the
# styles. Rather than copy-paste the same string of CSS into every message,
# we apply it once here, after the message has been composed.
html.gsub /<p>/, '<p style="color: black; margin: 0.75em 0; font-family: \'Helvetica Neue\', Arial, Sans-Serif">'
html.gsub(/<p>/, '<p style="color: black; margin: 0.75em 0; font-family: \'Helvetica Neue\', Arial, Sans-Serif">')
end
end

View file

@ -6,24 +6,24 @@ module UserRolesHelper
end
def role_icon(user, role)
if current_user && current_user.administrator?
if current_user&.administrator?
if user.has_role?(role)
image = "roles/#{role}"
alt = t("user.view.role.revoke.#{role}")
title = t("user.view.role.revoke.#{role}")
alt = t("user.show.role.revoke.#{role}")
title = t("user.show.role.revoke.#{role}")
url = revoke_role_path(:display_name => user.display_name, :role => role)
confirm = t("user_role.revoke.are_you_sure", :name => user.display_name, :role => role)
else
image = "roles/blank_#{role}"
alt = t("user.view.role.grant.#{role}")
title = t("user.view.role.grant.#{role}")
alt = t("user.show.role.grant.#{role}")
title = t("user.show.role.grant.#{role}")
url = grant_role_path(:display_name => user.display_name, :role => role)
confirm = t("user_role.grant.are_you_sure", :name => user.display_name, :role => role)
end
elsif user.has_role?(role)
image = "roles/#{role}"
alt = t("user.view.role.#{role}")
title = t("user.view.role.#{role}")
alt = t("user.show.role.#{role}")
title = t("user.show.role.#{role}")
end
if image

View file

@ -106,6 +106,7 @@ class Changeset < ActiveRecord::Base
pt.find("tag").each do |tag|
raise OSM::APIBadXMLError.new("changeset", pt, "tag is missing key") if tag["k"].nil?
raise OSM::APIBadXMLError.new("changeset", pt, "tag is missing value") if tag["v"].nil?
cs.add_tag_keyval(tag["k"], tag["v"])
end
@ -207,7 +208,7 @@ class Changeset < ActiveRecord::Base
user_display_name_cache = {} if user_display_name_cache.nil?
if user_display_name_cache && user_display_name_cache.key?(user_id)
if user_display_name_cache&.key?(user_id)
# use the cache if available
elsif user.data_public?
user_display_name_cache[user_id] = user.display_name

View file

@ -51,12 +51,13 @@ class ClientApplication < ActiveRecord::Base
def self.find_token(token_key)
token = OauthToken.includes(:client_application).find_by(:token => token_key)
token if token && token.authorized?
token if token&.authorized?
end
def self.verify_request(request, options = {}, &block)
signature = OAuth::Signature.build(request, options, &block)
return false unless OauthNonce.remember(signature.request.nonce, signature.request.timestamp)
value = signature.verify
value
rescue OAuth::Signature::UnknownSignatureMethod

View file

@ -88,19 +88,23 @@ class Node < ActiveRecord::Base
raise OSM::APIBadXMLError.new("node", pt, "lat missing") if pt["lat"].nil?
raise OSM::APIBadXMLError.new("node", pt, "lon missing") if pt["lon"].nil?
node.lat = OSM.parse_float(pt["lat"], OSM::APIBadXMLError, "node", pt, "lat not a number")
node.lon = OSM.parse_float(pt["lon"], OSM::APIBadXMLError, "node", pt, "lon not a number")
raise OSM::APIBadXMLError.new("node", pt, "Changeset id is missing") if pt["changeset"].nil?
node.changeset_id = pt["changeset"].to_i
raise OSM::APIBadUserInput, "The node is outside this world" unless node.in_world?
# version must be present unless creating
raise OSM::APIBadXMLError.new("node", pt, "Version is required when updating") unless create || !pt["version"].nil?
node.version = create ? 0 : pt["version"].to_i
unless create
raise OSM::APIBadXMLError.new("node", pt, "ID is required when updating.") if pt["id"].nil?
node.id = pt["id"].to_i
# .to_i will return 0 if there is no number that can be parsed.
# We want to make sure that there is no id with zero anyway
@ -119,6 +123,7 @@ class Node < ActiveRecord::Base
pt.find("tag").each do |tag|
raise OSM::APIBadXMLError.new("node", pt, "tag is missing key") if tag["k"].nil?
raise OSM::APIBadXMLError.new("node", pt, "tag is missing value") if tag["v"].nil?
node.add_tag_key_val(tag["k"], tag["v"])
end

View file

@ -87,16 +87,8 @@ class Notifier < ActionMailer::Base
@from_user = comment.user.display_name
@text = comment.body
@title = comment.diary_entry.title
@readurl = url_for(:controller => "diary_entry",
:action => "view",
:display_name => comment.diary_entry.user.display_name,
:id => comment.diary_entry.id,
:anchor => "comment#{comment.id}")
@commenturl = url_for(:controller => "diary_entry",
:action => "view",
:display_name => comment.diary_entry.user.display_name,
:id => comment.diary_entry.id,
:anchor => "newcomment")
@readurl = diary_entry_url(comment.diary_entry.user, comment.diary_entry, :anchor => "comment#{comment.id}")
@commenturl = diary_entry_url(comment.diary_entry.user, comment.diary_entry, :anchor => "newcomment")
@replyurl = new_message_url(comment.user, :message => { :title => "Re: #{comment.diary_entry.title}" })
@author = @from_user
@ -112,8 +104,7 @@ class Notifier < ActionMailer::Base
def friend_notification(friend)
with_recipient_locale friend.befriendee do
@friend = friend
@viewurl = url_for(:controller => "user", :action => "view",
:display_name => @friend.befriender.display_name)
@viewurl = user_url(@friend.befriender)
@friendurl = url_for(:controller => "user", :action => "make_friend",
:display_name => @friend.befriender.display_name)
@author = @friend.befriender.display_name
@ -190,8 +181,8 @@ class Notifier < ActionMailer::Base
end
def user_avatar_file_path(user)
image = user && user.image
if image && image.file?
image = user&.image
if image&.file?
return image.path(:small)
else
return Rails.root.join("app", "assets", "images", "users", "images", "small.png")

View file

@ -22,8 +22,10 @@ class OauthNonce < ActiveRecord::Base
# Remembers a nonce and it's associated timestamp. It returns false if it has already been used
def self.remember(nonce, timestamp)
return false if Time.now.to_i - timestamp.to_i > 86400
oauth_nonce = OauthNonce.create(:nonce => nonce, :timestamp => timestamp.to_i)
return false if oauth_nonce.new_record?
oauth_nonce
end
end

View file

@ -70,12 +70,15 @@ class Relation < ActiveRecord::Base
relation = Relation.new
raise OSM::APIBadXMLError.new("relation", pt, "Version is required when updating") unless create || !pt["version"].nil?
relation.version = pt["version"]
raise OSM::APIBadXMLError.new("relation", pt, "Changeset id is missing") if pt["changeset"].nil?
relation.changeset_id = pt["changeset"]
unless create
raise OSM::APIBadXMLError.new("relation", pt, "ID is required when updating") if pt["id"].nil?
relation.id = pt["id"].to_i
# .to_i will return 0 if there is no number that can be parsed.
# We want to make sure that there is no id with zero anyway
@ -94,6 +97,7 @@ class Relation < ActiveRecord::Base
pt.find("tag").each do |tag|
raise OSM::APIBadXMLError.new("relation", pt, "tag is missing key") if tag["k"].nil?
raise OSM::APIBadXMLError.new("relation", pt, "tag is missing value") if tag["v"].nil?
relation.add_tag_keyval(tag["k"], tag["v"])
end
@ -106,6 +110,7 @@ class Relation < ActiveRecord::Base
pt.find("member").each do |member|
# member_type =
raise OSM::APIBadXMLError.new("relation", pt, "The #{member['type']} is not allowed only, #{TYPES.inspect} allowed") unless TYPES.include? member["type"]
# member_ref = member['ref']
# member_role
member["role"] ||= "" # Allow the upload to not include this, in which case we default to an empty string.
@ -207,6 +212,7 @@ class Relation < ActiveRecord::Base
lock!
check_consistency(self, new_relation, user)
raise OSM::APIPreconditionFailedError, "Cannot update relation #{id}: data or member data is invalid." unless new_relation.preconditions_ok?(members)
self.changeset_id = new_relation.changeset_id
self.changeset = new_relation.changeset
self.tags = new_relation.tags
@ -219,6 +225,7 @@ class Relation < ActiveRecord::Base
def create_with_history(user)
check_create_consistency(self, user)
raise OSM::APIPreconditionFailedError, "Cannot create relation: data or member data is invalid." unless preconditions_ok?
self.version = 0
self.visible = true
save_with_history!
@ -253,7 +260,8 @@ class Relation < ActiveRecord::Base
element = model.lock("for share").find_by(:id => m[1])
# and check that it is OK to use.
raise OSM::APIPreconditionFailedError, "Relation with id #{id} cannot be saved due to #{m[0]} with id #{m[1]}" unless element && element.visible? && element.preconditions_ok?
raise OSM::APIPreconditionFailedError, "Relation with id #{id} cannot be saved due to #{m[0]} with id #{m[1]}" unless element&.visible? && element&.preconditions_ok?
hash[m[1]] = true
end
@ -267,9 +275,10 @@ class Relation < ActiveRecord::Base
def fix_placeholders!(id_map, placeholder_id = nil)
members.map! do |type, id, role|
old_id = id.to_i
if old_id < 0
if old_id.negative?
new_id = id_map[type.downcase.to_sym][old_id]
raise OSM::APIBadUserInput, "Placeholder #{type} not found for reference #{old_id} in relation #{self.id.nil? ? placeholder_id : self.id}." if new_id.nil?
[type, new_id, role]
else
[type, id, role]
@ -372,7 +381,7 @@ class Relation < ActiveRecord::Base
# reasonable on the assumption that adding or removing members doesn't
# materially change the rest of the relation.
any_relations =
changed_members.collect { |_id, type| type == "relation" }
changed_members.collect { |type, _id, _role| type == "Relation" }
.inject(false) { |acc, elem| acc || elem }
update_members = if tags_changed || any_relations

View file

@ -40,6 +40,7 @@ class RequestToken < OauthToken
def authorize!(user)
return false if authorized?
self.user = user
self.authorized_at = Time.now
self.verifier = OAuth::Helper.generate_key(20)[0, 20] unless oauth10?

View file

@ -214,10 +214,12 @@ class Trace < ActiveRecord::Base
def update_from_xml_node(pt, create = false)
raise OSM::APIBadXMLError.new("trace", pt, "visibility missing") if pt["visibility"].nil?
self.visibility = pt["visibility"]
unless create
raise OSM::APIBadXMLError.new("trace", pt, "ID is required when updating.") if pt["id"].nil?
id = pt["id"].to_i
# .to_i will return 0 if there is no number that can be parsed.
# We want to make sure that there is no id with zero anyway
@ -232,6 +234,7 @@ class Trace < ActiveRecord::Base
description = pt.find("description").first
raise OSM::APIBadXMLError.new("trace", pt, "description missing") if description.nil?
self.description = description.content
self.tags = pt.find("tag").collect do |tag|
@ -303,7 +306,7 @@ class Trace < ActiveRecord::Base
tp.save!
end
if gpx.actual_points > 0
if gpx.actual_points.positive?
max_lat = Tracepoint.where(:gpx_id => id).maximum(:latitude)
min_lat = Tracepoint.where(:gpx_id => id).minimum(:latitude)
max_lon = Tracepoint.where(:gpx_id => id).maximum(:longitude)

View file

@ -68,12 +68,15 @@ class Way < ActiveRecord::Base
way = Way.new
raise OSM::APIBadXMLError.new("way", pt, "Version is required when updating") unless create || !pt["version"].nil?
way.version = pt["version"]
raise OSM::APIBadXMLError.new("way", pt, "Changeset id is missing") if pt["changeset"].nil?
way.changeset_id = pt["changeset"]
unless create
raise OSM::APIBadXMLError.new("way", pt, "ID is required when updating") if pt["id"].nil?
way.id = pt["id"].to_i
# .to_i will return 0 if there is no number that can be parsed.
# We want to make sure that there is no id with zero anyway
@ -92,6 +95,7 @@ class Way < ActiveRecord::Base
pt.find("tag").each do |tag|
raise OSM::APIBadXMLError.new("way", pt, "tag is missing key") if tag["k"].nil?
raise OSM::APIBadXMLError.new("way", pt, "tag is missing value") if tag["v"].nil?
way.add_tag_keyval(tag["k"], tag["v"])
end
@ -123,7 +127,7 @@ class Way < ActiveRecord::Base
ordered_nodes[nd.sequence_id] = nd.node_id.to_s if visible_nodes[nd.node_id]
else
# otherwise, manually go to the db to check things
ordered_nodes[nd.sequence_id] = nd.node_id.to_s if nd.node && nd.node.visible?
ordered_nodes[nd.sequence_id] = nd.node_id.to_s if nd.node&.visible?
end
end
@ -194,6 +198,7 @@ class Way < ActiveRecord::Base
def create_with_history(user)
check_create_consistency(self, user)
raise OSM::APIPreconditionFailedError, "Cannot create way: data is invalid." unless preconditions_ok?
self.version = 0
self.visible = true
save_with_history!
@ -249,9 +254,10 @@ class Way < ActiveRecord::Base
# to IDs +id_map+.
def fix_placeholders!(id_map, placeholder_id = nil)
nds.map! do |node_id|
if node_id < 0
if node_id.negative?
new_id = id_map[:node][node_id]
raise OSM::APIBadUserInput, "Placeholder node not found for reference #{node_id} in way #{id.nil? ? placeholder_id : id}" if new_id.nil?
new_id
else
node_id

View file

@ -127,7 +127,7 @@
<% end %>
<%=
user = (@prev_by_user || @next_by_user).user.display_name
link_to content_tag(:bdi, user), :controller => "changeset", :action => "list", :display_name => user
link_to content_tag(:bdi, user), :controller => "changeset", :action => "index", :display_name => user
%>
<% if @next_by_user %>
&middot;

View file

@ -14,7 +14,7 @@
<%= content_tag "li", :id => "changeset_#{changeset.id}", :data => {:changeset => changeset_data} do %>
<h4>
<a class="changeset_id" href="<%= changeset_path(changeset.id) %>">
<a class="changeset_id" href="<%= changeset_path(changeset) %>">
<%= changeset.tags['comment'].to_s.presence || t('browse.no_comment') %>
</a>
</h4>

View file

@ -5,9 +5,9 @@
<% end -%>
<%
set_title(changeset_list_title(params, current_user))
set_title(changeset_index_title(params, current_user))
if params[:display_name]
@heading = t('changeset.list.title_user', :user => link_to(params[:display_name], :controller => "user", :action => "view", :display_name => params[:display_name])).html_safe
@heading = t('changeset.index.title_user', :user => link_to(params[:display_name], user_path(:display_name => params[:display_name]))).html_safe
else
@heading = @title
end

View file

@ -1,8 +1,8 @@
atom_feed(:language => I18n.locale, :schema_date => 2009,
:id => url_for(@params.merge(:only_path => false)),
:root_url => url_for(@params.merge(:action => :list, :format => nil, :only_path => false)),
:root_url => url_for(@params.merge(:action => :index, :format => nil, :only_path => false)),
"xmlns:georss" => "http://www.georss.org/georss") do |feed|
feed.title changeset_list_title(params, current_user)
feed.title changeset_index_title(params, current_user)
feed.updated @edits.map { |e| [e.created_at, e.closed_at].max }.max
feed.icon image_url("favicon.ico")
@ -32,7 +32,7 @@ atom_feed(:language => I18n.locale, :schema_date => 2009,
if changeset.user.data_public?
entry.author do |author|
author.name changeset.user.display_name
author.uri url_for(:controller => "user", :action => "view", :display_name => changeset.user.display_name, :only_path => false)
author.uri user_url(changeset.user, :only_path => false)
end
end
@ -51,7 +51,7 @@ atom_feed(:language => I18n.locale, :schema_date => 2009,
table.tr do |tr|
tr.th t("browse.changeset.belongs_to")
tr.td do |td|
td.a h(changeset.user.display_name), :href => url_for(:controller => "user", :action => "view", :display_name => changeset.user.display_name, :only_path => false)
td.a h(changeset.user.display_name), :href => user_url(changeset.user, :only_path => false)
end
end
end
@ -59,10 +59,10 @@ atom_feed(:language => I18n.locale, :schema_date => 2009,
table.tr do |tr|
tr.th t("browse.tag_details.tags")
tr.td do |td|
td.table :cellpadding => "0" do |table|
td.table :cellpadding => "0" do |tag_table|
changeset.tags.sort.each do |tag|
table.tr do |tr|
tr.td << "#{h(tag[0])} = #{linkify(h(tag[1]))}"
tag_table.tr do |tag_tr|
tag_tr.td << "#{h(tag[0])} = #{linkify(h(tag[1]))}"
end
end
end

View file

@ -4,10 +4,10 @@
<%= user_thumbnail diary_entry.user %>
<% end %>
<h2><%= link_to h(diary_entry.title), :action => 'view', :display_name => diary_entry.user.display_name, :id => diary_entry.id %></h2>
<h2><%= link_to h(diary_entry.title), diary_entry_path(diary_entry.user, diary_entry) %></h2>
<small class='deemphasize'>
<%= raw(t '.posted_by', :link_user => (link_to h(diary_entry.user.display_name), user_path(diary_entry.user)), :created => l(diary_entry.created_at, :format => :blog), :language_link => (link_to h(diary_entry.language.name), :controller => 'diary_entry', :action => 'list', :display_name => nil, :language => diary_entry.language_code)) %>
<%= raw(t '.posted_by', :link_user => (link_to h(diary_entry.user.display_name), user_path(diary_entry.user)), :created => l(diary_entry.created_at, :format => :blog), :language_link => (link_to h(diary_entry.language.name), :controller => 'diary_entry', :action => 'index', :display_name => nil, :language => diary_entry.language_code)) %>
</small>
</div>
@ -21,10 +21,10 @@
<% end %>
<ul class='secondary-actions clearfix'>
<% if params[:action] == 'list' %>
<li><%= link_to t('.comment_link'), :action => 'view', :display_name => diary_entry.user.display_name, :id => diary_entry.id, :anchor => 'newcomment' %></li>
<% if params[:action] == 'index' %>
<li><%= link_to t('.comment_link'), diary_entry_path(diary_entry.user, diary_entry, :anchor => 'newcomment') %></li>
<li><%= link_to t('.reply_link'), new_message_path(diary_entry.user, :message => { :title => "Re: #{diary_entry.title}" }) %></li>
<li><%= link_to t('.comment_count', :count => diary_entry.visible_comments.count), :action => 'view', :display_name => diary_entry.user.display_name, :id => diary_entry.id, :anchor => 'comments' %></li>
<li><%= link_to t('.comment_count', :count => diary_entry.visible_comments.count), diary_entry_path(diary_entry.user, diary_entry, :anchor => 'comments') %></li>
<% end %>
<% if current_user && current_user == diary_entry.user %>

View file

@ -0,0 +1 @@
<%= render :partial => "diary_entry", :object => diary_index_entry %>

View file

@ -1 +0,0 @@
<%= render :partial => "diary_entry", :object => diary_list_entry %>

View file

@ -11,7 +11,7 @@
<% @comments.each do |comment| -%>
<% cl = cycle('table0', 'table1') %>
<tr class="<%= cl %>">
<td width="25%"><%= link_to comment.diary_entry.title, :action => :view, :display_name => comment.diary_entry.user.display_name, :id => comment.diary_entry.id %></td>
<td width="25%"><%= link_to comment.diary_entry.title, diary_entry_path(comment.diary_entry.user, comment.diary_entry) %></td>
<td width="25%"><span title="<%= l comment.created_at, :format => :friendly %>"><%= t '.ago', :ago => time_ago_in_words(comment.created_at) %></span></td>
<td width="50%" class="richtext"><%= comment.body.to_html %></td>
</tr>

View file

@ -35,7 +35,7 @@
<% if @user %>
<%= render :partial => 'diary_entry', :collection => @entries %>
<% else %>
<%= render :partial => 'diary_list_entry', :collection => @entries %>
<%= render :partial => 'diary_index_entry', :collection => @entries %>
<% end %>
<div class="pagination">

View file

@ -7,24 +7,24 @@ xml.rss("version" => "2.0",
xml.channel do
xml.title @title
xml.description @description
xml.link url_for(:action => "list", :only_path => false)
xml.link url_for(:action => "index", :only_path => false)
xml.image do
xml.url image_url("mag_map-rss2.0.png")
xml.title @title
xml.width "100"
xml.height "100"
xml.link url_for(:action => "list", :only_path => false)
xml.link url_for(:action => "index", :only_path => false)
end
@entries.each do |entry|
xml.item do
xml.title entry.title
xml.link url_for(:action => "view", :id => entry.id, :display_name => entry.user.display_name, :only_path => false)
xml.guid url_for(:action => "view", :id => entry.id, :display_name => entry.user.display_name, :only_path => false)
xml.link diary_entry_url(entry.user, entry, :only_path => false)
xml.guid diary_entry_url(entry.user, entry, :only_path => false)
xml.description entry.body.to_html
xml.dc :creator, entry.user.display_name
xml.pubDate entry.created_at.to_s(:rfc822)
xml.comments url_for(:action => "view", :id => entry.id, :display_name => entry.user.display_name, :anchor => "comments", :only_path => false)
xml.comments diary_entry_url(entry.user, entry, :anchor => "comments", :only_path => false)
if entry.latitude && entry.longitude
xml.geo :lat, entry.latitude.to_s

View file

@ -1,7 +1,7 @@
<% content_for :heading do %>
<div id="userinformation" >
<%= user_image @entry.user %>
<h2><%= link_to t('.user_title', :user => h(@entry.user.display_name)), :action => :list %></h2>
<h2><%= link_to t('.user_title', :user => h(@entry.user.display_name)), :action => :index %></h2>
<p><%= rss_link_to :action => :rss, :display_name => @entry.user.display_name %></p>
</div>
<% end %>

View file

@ -2,9 +2,9 @@
<% comments.each do |comment| %>
<div class="comment">
<div style="float:left">
<%= link_to user_thumbnail(comment.user), user_path(comment.user.display_name) %>
<%= link_to user_thumbnail(comment.user), user_path(comment.user) %>
</div>
<b> <%= link_to comment.user.display_name, user_path(comment.user.display_name) %> </b> <br/>
<b> <%= link_to comment.user.display_name, user_path(comment.user) %> </b> <br/>
<%= comment.body %>
</div>
<span class="deemphasize">

View file

@ -1,9 +1,9 @@
<% reports.each do |report| %>
<div class="report">
<div style="float:left">
<%= link_to user_thumbnail(report.user), user_path(report.user.display_name) %>
<%= link_to user_thumbnail(report.user), user_path(report.user) %>
</div>
<%= t ".reported_by_html", :category => report.category, :user => link_to(report.user.display_name, user_path(report.user.display_name)) %>
<%= t ".reported_by_html", :category => report.category, :user => link_to(report.user.display_name, user_path(report.user)) %>
<br/>
<span class="deemphasize">
<%= t(".updated_at", :datetime => l(report.updated_at.to_datetime, :format => :friendly)) %>

View file

@ -34,10 +34,10 @@
<td><%= t ".states.#{issue.status}" %></td>
<td><%= link_to t(".reports_count", :count => issue.reports_count), issue %></td>
<td><%= link_to reportable_title(issue.reportable), reportable_url(issue.reportable) %></td>
<td><%= link_to issue.reported_user.display_name, user_path(issue.reported_user.display_name) if issue.reported_user %></td>
<td><%= link_to issue.reported_user.display_name, user_path(issue.reported_user) if issue.reported_user %></td>
<td>
<% if issue.user_updated %>
<%= t ".last_updated_time_user_html", :user => link_to(issue.user_updated.display_name, user_path(issue.user_updated.display_name)),
<%= t ".last_updated_time_user_html", :user => link_to(issue.user_updated.display_name, user_path(issue.user_updated)),
:time => distance_of_time_in_words_to_now(issue.updated_at),
:title => l(issue.updated_at) %>
<% else %>

View file

@ -82,14 +82,14 @@
<li>
<%= link_to inbox_messages_path do %>
<span class='count-number'><%= number_with_delimiter(current_user.new_messages.size) %></span>
<%= t('user.view.my messages') %>
<%= t('user.show.my messages') %>
<% end %>
</li>
<li>
<%= link_to t('user.view.my profile'), user_path(:display_name => current_user.display_name) %>
<%= link_to t('user.show.my profile'), user_path(current_user) %>
</li>
<li>
<%= link_to t('user.view.my settings'), :controller => 'user', :action => 'account', :display_name => current_user.display_name %>
<%= link_to t('user.show.my settings'), :controller => 'user', :action => 'account', :display_name => current_user.display_name %>
</li>
<li class="divider"></li>
<li>

View file

@ -43,9 +43,8 @@
<h2><%= t 'layouts.intro_header' %></h2>
<div class="close-wrap"><span class="icon close"></span></div>
<p><%= t 'layouts.intro_text' %></p>
<p><%= t 'layouts.partners_html',
<p><%= t 'layouts.hosting_partners_html',
:ucl => link_to(t('layouts.partners_ucl'), "https://www.ucl.ac.uk"),
:ic => link_to(t('layouts.partners_ic'), "https://www.imperial.ac.uk/"),
:bytemark => link_to(t('layouts.partners_bytemark'), "https://www.bytemark.co.uk"),
:partners => link_to(t('layouts.partners_partners'), "https://hardware.openstreetmap.org/thanks/") %>
</p>

View file

@ -2,7 +2,7 @@
<h1><%= t ".title" %></h1>
<% end %>
<p><%= raw t(".request_access", :app_name => link_to(@token.client_application.name, @token.client_application.url), :user => link_to(current_user.display_name, :controller => :user, :action => :view, :display_name => current_user.display_name)) %></p>
<p><%= raw t(".request_access", :app_name => link_to(@token.client_application.name, @token.client_application.url), :user => link_to(current_user.display_name, user_path(current_user))) %></p>
<%= form_tag authorize_url do %>
<%= hidden_field_tag "oauth_token", @token.token %>

View file

@ -32,9 +32,8 @@
<div class='section' id='partners'>
<h2><div class='icon partners'></div><%= t ".partners_title" %></h2>
<p><%= t 'layouts.partners_html',
<p><%= t 'layouts.hosting_partners_html',
:ucl => link_to(t('layouts.partners_ucl'), "https://www.ucl.ac.uk"),
:ic => link_to(t('layouts.partners_ic'), "https://www.imperial.ac.uk/"),
:bytemark => link_to(t('layouts.partners_bytemark'), "https://www.bytemark.co.uk"),
:partners => link_to(t('layouts.partners_partners'), "https://hardware.openstreetmap.org/thanks/") %>
</p>

View file

@ -21,8 +21,8 @@ xml.rss("version" => "2.0",
xml.item do
xml.title trace.name
xml.link url_for(:controller => :traces, :action => :view, :id => trace.id, :display_name => trace.user.display_name, :only_path => false)
xml.guid url_for(:controller => :traces, :action => :view, :id => trace.id, :display_name => trace.user.display_name, :only_path => false)
xml.link url_for(:controller => :traces, :action => :show, :id => trace.id, :display_name => trace.user.display_name, :only_path => false)
xml.guid url_for(:controller => :traces, :action => :show, :id => trace.id, :display_name => trace.user.display_name, :only_path => false)
xml.description do
xml.cdata! render(:partial => "description", :object => trace, :formats => [:html])

View file

@ -14,16 +14,16 @@
<% if @user.home_lon and @user.home_lat and contact.home_lon and contact.home_lat %>
<% distance = @user.distance(contact) %>
<% if distance < 1 %>
(<%= t 'user.view.m away', :count => (distance * 1000).round %>)
(<%= t 'user.show.m away', :count => (distance * 1000).round %>)
<% else %>
(<%= t 'user.view.km away', :count => distance.round %>)
(<%= t 'user.show.km away', :count => distance.round %>)
<% end %>
<% end %>
</p>
<p>
<% changeset = contact.changesets.first %>
<% if changeset %>
<%= t('user.view.latest edit', :ago => t('user.view.ago', :time_in_words_ago => time_ago_in_words(changeset.created_at))) %>
<%= t('user.show.latest edit', :ago => t('user.show.ago', :time_in_words_ago => time_ago_in_words(changeset.created_at))) %>
<% comment = changeset.tags['comment'].to_s != '' ? changeset.tags['comment'] : t('browse.no_comment') %>
"<%= link_to(comment,
{:controller => 'browse', :action => 'changeset', :id => changeset.id},
@ -35,12 +35,12 @@
</p>
<ul class='secondary-actions clearfix deemphasize'>
<li><%= link_to t('user.view.send message'), new_message_path(contact) %></li>
<li><%= link_to t('user.show.send message'), new_message_path(contact) %></li>
<li>
<% if current_user.is_friends_with?(contact) %>
<%= link_to t('user.view.remove as friend'), remove_friend_path(:display_name => contact.display_name, :referer => request.fullpath), :method => :post %>
<%= link_to t('user.show.remove as friend'), remove_friend_path(:display_name => contact.display_name, :referer => request.fullpath), :method => :post %>
<% else %>
<%= link_to t('user.view.add as friend'), make_friend_path(:display_name => contact.display_name, :referer => request.fullpath), :method => :post %>
<%= link_to t('user.show.add as friend'), make_friend_path(:display_name => contact.display_name, :referer => request.fullpath), :method => :post %>
<% end %>
</li>
</ul>

View file

@ -7,14 +7,14 @@
<td>
<p>
<% if user.creation_ip %>
<%= raw t 'user.list.summary',
:name => link_to(h(user.display_name), :action => "view", :display_name => user.display_name),
<%= raw t 'user.index.summary',
:name => link_to(h(user.display_name), user_path(user)),
:ip_address => link_to(user.creation_ip, :ip => user.creation_ip),
:date => l(user.creation_time, :format => :friendly)
%>
<% else %>
<%= raw t 'user.list.summary_no_ip',
:name => link_to(h(user.display_name), :action => "view", :display_name => user.display_name),
<%= raw t 'user.index.summary_no_ip',
:name => link_to(h(user.display_name), user_path(user)),
:date => l(user.creation_time, :format => :friendly)
%>
<% end %>

View file

@ -6,7 +6,7 @@
<h1><%= t '.my settings' %></h1>
<ul class='secondary-actions clearfix'>
<li><%= link_to t('.return to profile'), user_path(current_user) %></li>
<li><%= link_to t('user.view.oauth settings'), :controller => 'oauth_clients', :action => 'index' %></li>
<li><%= link_to t('user.show.oauth settings'), :controller => 'oauth_clients', :action => 'index' %></li>
</ul>
<% end %>

View file

@ -7,7 +7,7 @@
<!-- Displaying user's own profile page to themself -->
<ul class='secondary-actions clearfix'>
<li>
<%= link_to t('.my edits'), :controller => 'changeset', :action => 'list', :display_name => current_user.display_name %>
<%= link_to t('.my edits'), :controller => 'changeset', :action => 'index', :display_name => current_user.display_name %>
<span class='count-number'><%= number_with_delimiter(current_user.changesets.size) %></span>
</li>
<li>
@ -18,7 +18,7 @@
<span class='count-number'><%= number_with_delimiter(current_user.traces.size) %></span>
</li>
<li>
<%= link_to t('.my diary'), :controller => 'diary_entry', :action => 'list', :display_name => current_user.display_name %>
<%= link_to t('.my diary'), :controller => 'diary_entry', :action => 'index', :display_name => current_user.display_name %>
<span class='count-number'><%= number_with_delimiter(current_user.diary_entries.size) %></span>
</li>
<li>
@ -49,7 +49,7 @@
<ul class='secondary-actions clearfix'>
<li>
<%= link_to t('.edits'), :controller => 'changeset', :action => 'list', :display_name => @user.display_name %>
<%= link_to t('.edits'), :controller => 'changeset', :action => 'index', :display_name => @user.display_name %>
<span class='count-number'><%= number_with_delimiter(@user.changesets.size) %></span>
</li>
<li>
@ -66,7 +66,7 @@
<%= link_to t('.send message'), new_message_path(@user) %>
</li>
<li>
<%= link_to t('.diary'), :controller => 'diary_entry', :action => 'list', :display_name => @user.display_name %>
<%= link_to t('.diary'), :controller => 'diary_entry', :action => 'index', :display_name => @user.display_name %>
<span class='count-number'><%= number_with_delimiter(@user.diary_entries.size) %></span>
</li>
<li>

View file

@ -5,6 +5,7 @@ module I18n
super
rescue InvalidPluralizationData => ex
raise ex unless ex.entry.key?(:other)
ex.entry[:other]
end
end

View file

@ -52,6 +52,7 @@ module OpenStreetMap
def oauth1_verify(request, options = {}, &block)
signature = OAuth::Signature.build(request, options, &block)
return false unless OauthNonce.remember(signature.request.nonce, signature.request.timestamp)
value = signature.verify
if request.ssl? && !value
http_request = request.dup

View file

@ -222,7 +222,7 @@ af:
user: Gebruiker
comment: Opmerking
area: Gebied
list:
index:
title: Wysigingsstel
empty: Geen wysigingstelle gevind nie.
empty_area: Geen wysigingstelle in hierdie gebied.
@ -243,7 +243,7 @@ af:
new:
title: Nuwe dagboekinskrywing
publish_button: Publiseer
list:
index:
title: Gebruikersdagboeke
title_friends: Dagboeke van vriende
title_nearby: Gebruikers in die omgewing se dagboeke
@ -266,7 +266,7 @@ af:
use_map_link: benut kaart
save_button: Stoor
marker_text: Ligging van dagboekinskrywing
view:
show:
title: '%{user} se dagboek | %{title}'
user_title: '%{user} se dagboek'
leave_a_comment: Lewer kommentaar
@ -1041,7 +1041,7 @@ af:
get_directions_title: Kry rigtingaanwysings tussen twee punte
from: Vanaf
to: Na
where_am_i: Waar is ek tans?
where_am_i: Waar is dié?
submit_text: Soek
key:
table:
@ -1340,7 +1340,7 @@ af:
heading: Die gebruiker %{user} bestaan nie
body: Daar is geen gebruiker met die naam %{user} nie. Gaan u spelling na, of
u het moontlik op 'n foutiewe skakel geklik.
view:
show:
my diary: My Dagboek
new diary entry: nuwe dagboekinskrywing
my edits: My Redigerings
@ -1451,7 +1451,7 @@ af:
remove_friend:
success: '%{name} is uit u vriendekring verwyder.'
not_a_friend: '%{name} is nie een van u vriende nie.'
list:
index:
title: Gebruikers
heading: Gebruikers
summary: '%{name} geskep vanaf %{ip_address} op %{date}'

View file

@ -142,13 +142,13 @@ aln:
user: Përdorues
comment: Koment
area: Zonë
list:
index:
title: Changesets
title_user: Changesets nga %{user}
diary_entry:
new:
title: Hyrja e re Ditari
list:
index:
title: ditarë Përdorues ,
user_title: Ditari i %{user}
in_language_title: Shënimet e Ditarit në %{language}
@ -169,7 +169,7 @@ aln:
use_map_link: Harta e përdorimit
save_button: Ruje
marker_text: Vendndodhja Ditari hyrje
view:
show:
title: ditari i %{user} | %{title}
user_title: ditari i %{user}
leave_a_comment: Lene naj koment
@ -1167,7 +1167,7 @@ aln:
heading: Ky shfrytzues %{user} nuk egziston
body: Na vjen keq, ska shfrytëzues me kët emën %{user}. Ju lutemi kontrolloni
shkrimin, ose nashta linku ku keni kliku asht gabim.
view:
show:
my diary: ditari im
new diary entry: hyrje e re ne ditar
my edits: ndryshimet e mia
@ -1291,7 +1291,7 @@ aln:
not_a_friend: '%{name} nuk osht njoni pi shokve tu.'
filter:
not_an_administrator: Ju duhet të jeni administrator për me kry kët veprim.
list:
index:
title: Perdoruesit
heading: Perdoruesit
showing:

View file

@ -260,7 +260,7 @@ ar:
user: المستخدم
comment: التعليق
area: منطقة
list:
index:
title: حزم التغييرات
title_user: حزم التغييرات بواسطة %{user}
title_friend: مجموعات تغييرات بواسطة أصدقائي
@ -285,7 +285,7 @@ ar:
new:
title: مدخلة يومية جديدة
publish_button: نشر
list:
index:
title: يوميات المستخدمين
title_friends: يوميات الأصدقاء
title_nearby: يوميات/مفكرات المستخدمين في المقبرة
@ -308,7 +308,7 @@ ar:
use_map_link: استخدم الخريطة
save_button: احفظ
marker_text: موقع مدخلة اليومية
view:
show:
title: يوميات %{user} | %{title}
user_title: يومية %{user}
leave_a_comment: اترك تعليقًا
@ -2081,7 +2081,7 @@ ar:
body: عذرًا، لا يوجد مستخدم بالاسم %{user}. يرجى تدقيق الاسم، أو ربما يكون الرابط
الذي تم النقر عليه خاطئ.
deleted: تم حذفه
view:
show:
my diary: اليوميات
new diary entry: مدخلة يومية جديدة
my edits: المُساهمات
@ -2252,7 +2252,7 @@ ar:
not_a_friend: '%{name} ليس من أحد أصدقائك.'
filter:
not_an_administrator: عليك أن تكون إداري لتنفيذ هذا الإجراء.
list:
index:
title: المستخدمون
heading: المستخدمون
showing:

View file

@ -117,13 +117,13 @@ arz:
user: المستخدم
comment: التعليق
area: منطقة
list:
index:
title: حزم التغييرات
title_user: حزم التغييرات بواسطه %{user}
diary_entry:
new:
title: مدخله يوميه جديدة
list:
index:
title: يوميات المستخدمين
user_title: يوميه %{user}
in_language_title: مدخلات اليوميه باللغه %{language}
@ -144,7 +144,7 @@ arz:
use_map_link: استخدم الخريطة
save_button: احفظ
marker_text: موقع مدخله اليومية
view:
show:
title: يوميات المستخدمين | %{user}
user_title: يوميه %{user}
leave_a_comment: اترك تعليقًا
@ -972,7 +972,7 @@ arz:
heading: المستخدم %{user} غير موجود
body: عذرًا، لا يوجد مستخدم بالاسم %{user}. يرجى تدقيق الاسم، أو ربما يكون الرابط
الذى تم النقر عليه خاطئ.
view:
show:
my diary: يوميتي
new diary entry: مدخله يوميه جديدة
my edits: مساهمات

View file

@ -233,7 +233,7 @@ ast:
user: Usuariu
comment: Comentariu
area: Área
list:
index:
title: Conxuntos de cambeos
title_user: Conxuntos de cambeos de %{user}
title_friend: Conxuntos de cambeos de los mios collacios
@ -259,7 +259,7 @@ ast:
new:
title: Nueva entrada del diariu
publish_button: Espublizar
list:
index:
title: Diarios d'usuarios
title_friends: Diarios de collacios
title_nearby: Diarios d'usuarios cercanos
@ -282,7 +282,7 @@ ast:
use_map_link: usar mapa
save_button: Guardar
marker_text: Allugamientu de la entrada del diariu
view:
show:
title: Diariu de %{user} | %{title}
user_title: Diariu de %{user}
leave_a_comment: Dexar un comentariu
@ -2067,7 +2067,7 @@ ast:
body: Lo siento, nun hai dengún usuariu col nome %{user}. Comprueba la escritura
o si calcasti nun enllaz enquivocáu.
deleted: desaniciao
view:
show:
my diary: El mio diariu
new diary entry: nueva entrada del diariu
my edits: Les mios ediciones
@ -2248,7 +2248,7 @@ ast:
not_a_friend: '%{name} nun ye unu de los tos amigos.'
filter:
not_an_administrator: Has de ser alministrador pa facer esa aición.
list:
index:
title: Usuarios
heading: Usuarios
showing:

View file

@ -185,7 +185,7 @@ az:
user: İstifadəçi
comment: Şərh
area: Ərazi
list:
index:
title: Dəyişikliklər dəsti
title_user: '%{user} tərəfindən edilmiş dəyişikliklər dəsti'
title_friend: Dostlarınız tərəfindən edilmiş dəyişikliklər dəsti
@ -199,7 +199,7 @@ az:
new:
title: Yeni Gündəlik Yazısı
publish_button: Nəşr et
list:
index:
title: İstifadəçi gündəlikləri
title_friends: Dostların gündəlikləri
title_nearby: Yaxınlıqdakı İstifadəçilərin Gündəlikləri
@ -222,7 +222,7 @@ az:
use_map_link: xəritə üzərində göstər
save_button: Qeyd et
marker_text: Gundəlik yazısının yazıldığı yer
view:
show:
title: İstifadəçi %{user} gündəliyi | %{title}
user_title: İstifadəçi %{user} gündəliyi
leave_a_comment: Şərh yaz
@ -1073,7 +1073,7 @@ az:
legale_names:
france: Fransa
italy: İtaliya
view:
show:
my diary: mənim gündəliyim
my edits: mənim redaktələrim
my comments: mənim şərhlərim
@ -1129,7 +1129,7 @@ az:
remove_friend:
heading: '%{user} dostluqdan silək?'
button: Dostluqdan sil
list:
index:
title: İstifadəçilər
heading: İstifadəçilər
hide: Seçilmiş istifadəçiləri gizlət

View file

@ -245,7 +245,7 @@ ba:
user: Ҡулланыусы
comment: Комментарий
area: Өлкә
list:
index:
title: Төҙәтеүҙәр пакеты
title_user: ' %{user} ҡулланыусыһының төҙәтеүҙәр пакеты'
title_friend: Дуҫтарығыҙҙың төҙәтеүҙәре пакеты
@ -271,7 +271,7 @@ ba:
new:
title: Яңы көндәлеккә инеү
publish_button: Баҫтырырға
list:
index:
title: Көндәлектәр
title_friends: Дуҫтарың көндәлектәре
title_nearby: Йәнәш ҡатнашыусылар көндәлеге
@ -291,7 +291,7 @@ ba:
use_map_link: картаны ҡуллан
save_button: Һаҡларға
marker_text: Көндәлек яҙыу урыны
view:
show:
title: '%{ҡулланыусы}ның көндәлеге|%{титул}'
user_title: '%{ҡулланыусы}ның көндәлеге'
leave_a_comment: Фекер ҡалдыр

View file

@ -172,7 +172,7 @@ be-Tarask:
user: Карыстальнік
comment: Камэнтар
area: Абшар
list:
index:
title: Наборы зьменаў
title_user: Набор зьменаў %{user}
title_friend: Наборы зьменаў маіх сяброў
@ -183,7 +183,7 @@ be-Tarask:
diary_entry:
new:
title: Новы запіс у дзёньніку
list:
index:
title: Дзёньнікі карыстальнікаў
title_friends: Дзёньнікі сяброў
title_nearby: Дзёньнікі суседніх удзельнікаў
@ -206,7 +206,7 @@ be-Tarask:
use_map_link: на мапе
save_button: Захаваць
marker_text: Месцазнаходжаньне запісу дзёньніка
view:
show:
title: Дзёньнік %{user} | %{title}
user_title: Дзёньнік %{user}
leave_a_comment: Пакінуць камэнтар
@ -1312,7 +1312,7 @@ be-Tarask:
heading: Удзельнік %{user} не існуе
body: Прабачце, няма ўдзельніка з іменем %{user}. Калі ласка, праверце дакладнасьць
напісаньня, ці, магчыма, спасылка па якой Вы перайшлі, няслушная.
view:
show:
my diary: Мой дзёньнік
new diary entry: новы запіс у дзёньніку
my edits: Мае рэдагаваньні
@ -1471,7 +1471,7 @@ be-Tarask:
filter:
not_an_administrator: Вам неабходна быць адміністратарам, каб выканаць гэтае
дзеяньне.
list:
index:
title: Удзельнікі
heading: Карыстальнікі
showing:

View file

@ -238,7 +238,7 @@ be:
user: Карыстальнік
comment: Каментар
area: Мясцовасць
list:
index:
title: Наборы зменаў
title_user: Набор зменаў ад %{user}
title_friend: Наборы зменаў ад вашых сяброў
@ -263,7 +263,7 @@ be:
new:
title: Новы запіс дзённіку
publish_button: Апублікаваць
list:
index:
title: Дзённікі карыстальнікаў
title_friends: Дзённікі сяброў
title_nearby: Дзённікі карыстальнікаў паблізу
@ -286,7 +286,7 @@ be:
use_map_link: карыстацца картай
save_button: Запісаць
marker_text: Месцазнаходжанне запісу дзённіку
view:
show:
title: Дзённік карыстальніка | %{user}
user_title: Дзённік %{user}
leave_a_comment: Пакінуць каментар
@ -1879,7 +1879,7 @@ be:
body: Прабачце, карыстальнік %{user} не знойдзены. Please check your spelling,
Калі ласка, праверце свой правапіс, ці, магчыма, вам далі няправільную спасылку.
deleted: выдалены
view:
show:
my diary: Мой дзённік
new diary entry: новы запіс у дзённіку
my edits: Мае змены
@ -2055,7 +2055,7 @@ be:
filter:
not_an_administrator: Вам неабходна мець правы адміністратара для выканання
гэтага дзеяння.
list:
index:
title: Удзельнікі
heading: Удзельнікі
showing:

View file

@ -190,7 +190,7 @@ bg:
user: Потребител
comment: Коментар
area: Област
list:
index:
title: Списък с промени
title_user: Списък с промени на %{user}
title_friend: Списъци с промени на Ваши приятели
@ -209,7 +209,7 @@ bg:
new:
title: Нов запис в дневника
publish_button: Публикуване
list:
index:
title: Дневници на потребителите
title_friends: Дневници на приятели
title_nearby: Дневници на потребители наблизо
@ -227,7 +227,7 @@ bg:
longitude: 'Географска дължина:'
use_map_link: използвай карта
save_button: Съхраняване
view:
show:
title: Дневник на потребител %{user} | %{title}
user_title: дневник на %{user}
leave_a_comment: Оставете коментар
@ -1133,7 +1133,7 @@ bg:
title: Няма такъв потребител
heading: Потребителят %{user} не съществува
deleted: изтрито
view:
show:
my edits: Mоите редакции
my traces: Моите следи
my notes: Моите бележки
@ -1207,7 +1207,7 @@ bg:
heading: Потвърдете смяната на електронната поща
remove_friend:
success: '%{name} беше премахнат от списъка с приятелите.'
list:
index:
title: Потребители
heading: Потребители
user_role:

View file

@ -242,7 +242,7 @@ bn:
user: ব্যবহারকারী
comment: মন্তব্য
area: এলাকা
list:
index:
title: পরিবর্তনসমূহ
title_user: '%{user} দ্বারা পরিবর্তন ধার্য'
title_friend: আমার বন্ধুদের দ্বারা পরিবর্তনসেট
@ -268,7 +268,7 @@ bn:
new:
title: নতুন দিনলিপির ভুক্তি
publish_button: প্রকাশ করুন
list:
index:
title: ব্যবহারকারীর দিনলিপি
title_friends: বন্ধুর দিনলিপি
title_nearby: নিকটবর্তী ব্যবহারকারীর দিনলিপি
@ -291,7 +291,7 @@ bn:
use_map_link: মানচিত্র ব্যবহার করুন
save_button: সংরক্ষণ
marker_text: দিনলিপির ভুক্তির অবস্থান
view:
show:
title: '%{user}-এর দিনলিপি | %{title}'
user_title: '%{user}-এর দিনলিপি'
leave_a_comment: মন্তব্য করুন
@ -1325,7 +1325,7 @@ bn:
france: ফ্রান্স
italy: ইতালি
rest_of_world: অন্যান্য দেশসমূহ
view:
show:
my edits: আমার সম্পাদনা
my profile: আমার প্রোফাইল
my settings: আমার সেটিংস
@ -1384,7 +1384,7 @@ bn:
go_public:
flash success: আপনার সকল সম্পাদনা এখন উন্মুক্ত, এবং এখন আপনার সম্পাদনের অনুমতি
রয়েছে।
list:
index:
title: ব্যবহারকারীগণ
heading: ব্যবহারকারীগণ
auth_association:

View file

@ -239,7 +239,7 @@ br:
user: Implijer
comment: Addispleg
area: Takad
list:
index:
title: Hollad kemmoù
title_user: Strolladoù kemmoù gant %{user}
title_friend: Hollad ar c'hemmoù degaset gant ho mignoned
@ -265,7 +265,7 @@ br:
new:
title: Enmoned nevez en deizlevr
publish_button: Embann
list:
index:
title: Deizlevrioù an implijerien
title_friends: Marilhoù ar vignoned
title_nearby: Marilhoù mignoned a-dost
@ -288,7 +288,7 @@ br:
use_map_link: implijout ar gartenn
save_button: Enrollañ
marker_text: Lec'hiadur an enmoned en deizlevr
view:
show:
title: Deizlevr %{user} | %{title}
user_title: Deizlevr %{user}
leave_a_comment: Lezel un addispleg
@ -1969,7 +1969,7 @@ br:
body: Ho tigarez, n'eus implijer ebet en anv %{user}. Gwiriit hag-eñ eo skrivet
mat, pe marteze hoc'h eus kliket war ul liamm fall.
deleted: dilamet
view:
show:
my diary: ma deizlevr
new diary entry: enmoned nevez en deizlevr
my edits: ma aozadennoù
@ -2148,7 +2148,7 @@ br:
not_a_friend: '%{name} n''eo ket unan eus ho mignoned.'
filter:
not_an_administrator: Ret eo deoc'h bezañ merour evit kas an ober-mañ da benn.
list:
index:
title: Implijerien
heading: Implijerien
showing:

View file

@ -203,7 +203,7 @@ bs:
user: Korisnik
comment: Komentar
area: Područje
list:
index:
title: Setovi promjena
title_user: Setovi promjena od %{user}
title_friend: Setovi promjena vaših prijatelja
@ -218,7 +218,7 @@ bs:
new:
title: Novi unos u dnevnik
publish_button: Objavi
list:
index:
title: Dnevnici korisnika
title_friends: Dnevnici prijatelja
title_nearby: Dnevnici obližnjih korisnika
@ -241,7 +241,7 @@ bs:
use_map_link: korisititi kartu
save_button: Spremiti
marker_text: Lokacija unosa u dnevnik
view:
show:
title: Dnevnik korisnika %{user} | %{title}
user_title: Dnenvnik korisnika %{user}
leave_a_comment: Ostaviti komentar
@ -1542,7 +1542,7 @@ bs:
heading: Korisnik %{user} ne postoji
body: Žao nam je, ne postoji korisnik s imenom %{user}. Molimo da provjerite
Vaš unos ili da li je poveznica na koju ste kliknuli ispravna.
view:
show:
my diary: Moj dnevnik
new diary entry: Novi unos u dnevnik
my edits: Moje promjene
@ -1703,7 +1703,7 @@ bs:
not_a_friend: '%{name} nije jedan od Vaših prijatelja.'
filter:
not_an_administrator: Trebate biti moderator da bi izvršili tu radnju.
list:
index:
title: Korisnici
heading: Korisnici
showing:

View file

@ -262,7 +262,7 @@ ca:
user: Usuari
comment: Comentari
area: Àrea
list:
index:
title: Conjunt de canvis
title_user: Conjunt de canvis de %{user}
title_friend: Conjunts de canvis dels meus amics
@ -288,7 +288,7 @@ ca:
new:
title: Entrada de diari nova
publish_button: Publica
list:
index:
title: Diaris d'usuari/a
title_friends: Diaris dels amics
title_nearby: Diaris d'amics propers
@ -311,7 +311,7 @@ ca:
use_map_link: usa el mapa
save_button: Desa
marker_text: Localització de l'Entrada del Diari
view:
show:
title: Diari de %{user} | %{title}
user_title: Diari de %{user}
leave_a_comment: Deixa un comentari
@ -935,6 +935,10 @@ ca:
reports:
new:
categories:
diary_entry:
other_label: Un altre
diary_comment:
other_label: Un altre
note:
spam_label: Aquesta nota és brossa
personal_label: Aquesta nota conté dades personals
@ -1633,6 +1637,7 @@ ca:
identifiable: Identifiable (mostrat en llista de traça i com a punts d'identificació,
ordenades amb timestamps)
new:
upload_trace: Carrega una traça GPS
upload_gpx: 'Carregui l''arxiu GPX:'
description: 'Descripció:'
tags: 'Etiquetes:'
@ -1974,7 +1979,7 @@ ca:
body: No hi ha cap usuari amb el nom %{user}. Comproveu l'ortografia, o potser
l'enllaç on heu fet clic és incorrecte.
deleted: esborrat
view:
show:
my diary: El meu diari
new diary entry: Nova entrada del diari
my edits: Les meves edicions
@ -2155,7 +2160,7 @@ ca:
not_a_friend: '%{name} no és un dels seus amics.'
filter:
not_an_administrator: Cal que sigueu administrador per dur a terme aquesta acció.
list:
index:
title: Usuaris
heading: Usuaris
showing:

View file

@ -235,7 +235,7 @@ ce:
user: Декъашхо
comment: Коммент
area: Область
list:
index:
title: Нисдарш
title_user: Декъашхочун %{user} нисдарш
title_friend: Хьан доттагӀийн нисдарш
@ -260,7 +260,7 @@ ce:
new:
title: Де керла дӀаяздар
publish_button: Арахеца
list:
index:
title: Дневникаш
title_friends: ДоттагӀийн дневникаш
title_nearby: Уллера декъашхойн дневникаш
@ -283,7 +283,7 @@ ce:
use_map_link: Гайта картан тӀехь
save_button: Ӏалашдан
marker_text: Билгало язйаран меттиг
view:
show:
title: Декъашхочун дневник %{user} | %{title}
user_title: Декъашхочун дневник %{user}
leave_a_comment: Йитта коммент
@ -660,7 +660,7 @@ ce:
user:
new:
continue: Кхин дӀа
view:
show:
edits: Нисдарш
ago: (%{time_in_words_ago} юха)
user location: Декъашхо волу/йолу меттиг

View file

@ -270,7 +270,7 @@ cs:
user: Uživatel
comment: Komentář
area: Oblast
list:
index:
title: Sady změn
title_user: Sady změn uživatele %{user}
title_friend: Sady změn podle mých přátel
@ -295,7 +295,7 @@ cs:
new:
title: Nový záznam do deníku
publish_button: Publikovat
list:
index:
title: Deníky uživatelů
title_friends: Deníky přátel
title_nearby: Deníky uživatelů poblíž
@ -318,7 +318,7 @@ cs:
use_map_link: použít mapu
save_button: Uložit
marker_text: Místo deníkového záznamu
view:
show:
title: Deník uživatele %{user} | %{title}
user_title: Deník uživatele %{user}
leave_a_comment: Zanechat komentář
@ -1744,6 +1744,8 @@ cs:
upload_trace: Nahrát GPS stopu
trace_uploaded: Váš GPX soubor byl uložen a čeká na zařazení do databáze. Obvykle
to netrvá víc jak půl hodiny. Až bude zařazen, budete informováni emailem.
upload_failed: Promiňte, nahrání GPX se nezdařilo. Na problém byl upozorněn
správce. Zkuste to prosím znovu
traces_waiting:
few: Na zpracování čekají %{count} vaše stopy. Zvažte, zda by nebylo před
nahráním dalších lepší počkat, dokud nebudou zpracovány, abyste neblokovali
@ -1772,6 +1774,8 @@ cs:
visibility: 'Viditelnost:'
visibility_help: co tohle znamená?
visibility_help_url: http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces?uselang=cs
update:
updated: Stopa nahrána
trace_optionals:
tags: Štítky
show:
@ -2082,7 +2086,7 @@ cs:
body: Je mi líto, ale uživatel %{user} neexistuje. Zkontrolujte překlepy nebo
jste možná klikli na chybný odkaz.
deleted: smazán
view:
show:
my diary: Můj deníček
new diary entry: nový záznam do deníčku
my edits: Moje úpravy
@ -2261,7 +2265,7 @@ cs:
not_a_friend: '%{name} není mezi vašimi přáteli.'
filter:
not_an_administrator: K provedení této akce musíte být správce.
list:
index:
title: Uživatelé
heading: Uživatelé
showing:

View file

@ -229,7 +229,7 @@ cy:
user: Defnyddiwr
comment: Sylw
area: Maes
list:
index:
title: Setiau-newid
title_user: Set-newid gan %{user}
title_friend: Setiau-newid eich cyfeillion
@ -255,7 +255,7 @@ cy:
new:
title: Cofnod Dyddiadur Newydd
publish_button: Cyhoeddi
list:
index:
title: Dyddiaduron defnyddwyr
title_friends: Dyddiaduron ffrindiau
title_nearby: Dyddiaduron defnyddwyr gerllaw
@ -278,7 +278,7 @@ cy:
use_map_link: defnyddiwch y map
save_button: Arbed
marker_text: Lleoliad cofnod y dyddiadur
view:
show:
title: yddiadur %{user} | %{title}
user_title: dyddiadur %{user}
leave_a_comment: Gadael sylw
@ -1391,7 +1391,7 @@ cy:
no_such_user:
title: Dim defnyddiwr o'r fath
heading: Nid yw'r defnyddiwr %{user} yn bodoli.
view:
show:
my diary: Fy Nyddiadur
new diary entry: cofnod dyddiadur newydd
my edits: Fy Ngolygiadau
@ -1510,7 +1510,7 @@ cy:
button: Peidio bod yn gyfaill
success: Tynnwyd %{name} o'ch cyfeillion.
not_a_friend: Nid yw %{name} yn un o'ch cyfeillion.
list:
index:
title: Defnyddwyr
heading: Defnyddwyr
user_role:

View file

@ -261,7 +261,7 @@ da:
user: Bruger
comment: Kommentar
area: Område
list:
index:
title: Ændringssæt
title_user: Ændringssæt af %{user}
title_friend: Ændringssæt af mine venner
@ -287,7 +287,7 @@ da:
new:
title: Nyt blogindlæg
publish_button: Offentliggør
list:
index:
title: Brugerblogs
title_friends: Venners blogs
title_nearby: Blogs fra brugere i nærheden
@ -310,7 +310,7 @@ da:
use_map_link: brug kort
save_button: Gem
marker_text: Placering for blogindlæg
view:
show:
title: '%{user}''s blog | %{title}'
user_title: '%{user}''s blog'
leave_a_comment: Tilføj en kommentar
@ -2033,7 +2033,7 @@ da:
body: Der findes desværre ingen bruger ved navn %{user}. Tjek venligst stavningen,
ellers kan linket du trykkede på være forkert.
deleted: slettet
view:
show:
my diary: Min blog
new diary entry: nyt blogindlæg
my edits: Mine redigeringer
@ -2212,7 +2212,7 @@ da:
not_a_friend: '%{name} er ikke en af dine venner.'
filter:
not_an_administrator: Du skal være administrator for at gøre dette.
list:
index:
title: Brugere
heading: Brugere
showing:

View file

@ -285,7 +285,7 @@ de:
user: Benutzer
comment: Kommentar
area: Bereich
list:
index:
title: Änderungssätze
title_user: Änderungssätze von %{user}
title_friend: Änderungssätze meiner Freunde
@ -312,7 +312,7 @@ de:
new:
title: Neuer Blog-Eintrag
publish_button: Veröffentlichen
list:
index:
title: Benutzer-Blogs
title_friends: Blogs deiner Freunde
title_nearby: Blogs von Nutzern in der Nähe
@ -335,7 +335,7 @@ de:
use_map_link: Ort auf Karte auswählen
save_button: Speichern
marker_text: Ort des Blogeintrags
view:
show:
title: Blog von %{user} | %{title}
user_title: Blog von %{user}
leave_a_comment: Schreibe einen Kommentar
@ -2174,7 +2174,7 @@ de:
body: Es gibt leider keinen Benutzer mit dem Namen %{user}. Du hast dich möglicherweise
vertippt oder bist einem ungültigem Link gefolgt.
deleted: gelöscht
view:
show:
my diary: Mein Blog
new diary entry: Neuer Blogeintrag
my edits: Meine Änderungen
@ -2358,7 +2358,7 @@ de:
not_a_friend: '%{name} ist nicht dein Freund.'
filter:
not_an_administrator: Du musst ein Administrator sein um diese Aktion auszuführen.
list:
index:
title: Benutzer
heading: Benutzer
showing:

View file

@ -200,7 +200,7 @@ diq:
user: Karber
comment: Mışewre
area: Erz
list:
index:
title: Seta vurnayışan
title_user: Vurriyayışê setê %{user}
title_friend: Qeydê vurnayışê embazan
@ -211,7 +211,7 @@ diq:
diary_entry:
new:
publish_button: Vıla ke
list:
index:
user_title: '%{user} (Rocek)'
edit:
subject: 'Mewzu:'
@ -221,7 +221,7 @@ diq:
latitude: 'Verıniye:'
longitude: 'Derganiye:'
save_button: Qeyd ke
view:
show:
login: Cıkewtış
save_button: Qeyd ke
diary_entry:
@ -912,7 +912,7 @@ diq:
no_such_user:
title: Karbero do wuna çıniyo
heading: '%{user} name dı karber çıniyo'
view:
show:
my diary: Rocekê mı
new diary entry: Roceko newe defi
my edits: Iştirakê mı
@ -1004,7 +1004,7 @@ diq:
button: Xo rê embaz ke
remove_friend:
button: Embazan ra vec
list:
index:
title: Karberi
heading: Karberi
showing:

View file

@ -220,7 +220,7 @@ dsb:
user: Wužywaŕ
comment: Komentar
area: Wurězk
list:
index:
title: Sajźby změnow
title_user: Sajźby změnow wót %{user}
title_friend: Změny twójich pśijaśelow
@ -237,7 +237,7 @@ dsb:
diary_entry:
new:
title: Nowy zapisk dnjownika
list:
index:
title: Dnjowniki wužywarjow
title_friends: Dnjowniki pśijaśelow
title_nearby: Dnjowniki wužywarjow w bliskosći
@ -260,7 +260,7 @@ dsb:
use_map_link: kórtu wužywaś
save_button: Składowaś
marker_text: Městno zapiska dnjownika
view:
show:
title: Dnjownik %{user} | %{title}
user_title: dnjownik wužywarja %{user}
leave_a_comment: Komentar zawóstajiś
@ -1677,7 +1677,7 @@ dsb:
heading: Wužywaŕ %{user} njeeksistěrujo
body: Bóžko njejo wužywaŕ z mjenim %{user}. Pšosym pśekontrolěruj swój pšawopis,
abo wótkaz, na kótaryž sy kliknuł, jo njepłaśiwy.
view:
show:
my diary: Mój dnjownik
new diary entry: nowy dnjownikowy zapisk
my edits: Móje změny
@ -1847,7 +1847,7 @@ dsb:
not_a_friend: '%{name} njejo twój pśijaśel.'
filter:
not_an_administrator: Musyš administrator byś, aby wuwjadł toś tu akciju.
list:
index:
title: Wužywarje
heading: Wužywarje
showing:

View file

@ -269,7 +269,7 @@ el:
user: Χρήστης
comment: Σχόλιο
area: Περιοχή
list:
index:
title: Ομάδες αλλαγών
title_user: Ομάδες αλλαγών από τον %{user}
title_friend: Ομάδες αλλαγών από τους φίλους μου
@ -295,7 +295,7 @@ el:
new:
title: Νέα καταχώρηση ημερολογίου
publish_button: Δημοσίευση
list:
index:
title: Ημερολόγια χρηστών
title_friends: Ημερολόγια φίλων
title_nearby: Ημερολόγια κοντινών χρηστών
@ -318,7 +318,7 @@ el:
use_map_link: χρησιμοποιήστε τον χάρτη
save_button: Αποθήκευση
marker_text: Τοποθεσία καταχώρησης ημερολογίου
view:
show:
title: το ημερολόγιο του %{user} | %{title}
user_title: ημερολόγιο του %{user}
leave_a_comment: Αφήστε ένα σχόλιο
@ -2150,7 +2150,7 @@ el:
ορθογραφικά λάθη ή να είναι λάθος ο σύνδεσμος μέσω του οποίου φτάσατε σε αυτήν
τη σελίδα.
deleted: διεγράφη
view:
show:
my diary: Το Ημερολόγιό Μου
new diary entry: νέα καταχώρηση ημερολογίου
my edits: Οι Επεξεργασίες Μου
@ -2336,7 +2336,7 @@ el:
not_a_friend: Ο χρήστης %{name} δεν είναι ένας από τους φίλους σας.
filter:
not_an_administrator: Πρέπει να είστε διαχειριστής για να το κάνετε αυτό.
list:
index:
title: Χρήστες
heading: Χρήστες
showing:

View file

@ -252,7 +252,7 @@ en-GB:
user: User
comment: Comment
area: Area
list:
index:
title: Changesets
title_user: Changesets by %{user}
title_friend: Changesets by your friends
@ -277,7 +277,7 @@ en-GB:
new:
title: New Diary Entry
publish_button: Publish
list:
index:
title: Users' diaries
title_friends: Friends' diaries
title_nearby: Nearby Users' diaries
@ -300,7 +300,7 @@ en-GB:
use_map_link: use map
save_button: Save
marker_text: Diary entry location
view:
show:
title: '%{user}''s diary | %{title}'
user_title: '%{user}''s diary'
leave_a_comment: Leave a comment
@ -1909,7 +1909,7 @@ en-GB:
body: Sorry, there is no user with the name %{user}. Please check your spelling,
or maybe the link you clicked is wrong.
deleted: deleted
view:
show:
my diary: My Diary
new diary entry: new diary entry
my edits: My Edits
@ -2083,7 +2083,7 @@ en-GB:
not_a_friend: '%{name} is not one of your friends.'
filter:
not_an_administrator: You need to be an administrator to perform that action.
list:
index:
title: Users
heading: Users
showing:

View file

@ -228,7 +228,7 @@ en:
user: "User"
comment: "Comment"
area: "Area"
list:
index:
title: "Changesets"
title_user: "Changesets by %{user}"
title_friend: "Changesets by my friends"
@ -253,7 +253,7 @@ en:
new:
title: New Diary Entry
publish_button: "Publish"
list:
index:
title: "Users' diaries"
title_friends: "Friends' diaries"
title_nearby: "Nearby Users' diaries"
@ -276,7 +276,7 @@ en:
use_map_link: "use map"
save_button: "Save"
marker_text: Diary entry location
view:
show:
title: "%{user}'s diary | %{title}"
user_title: "%{user}'s diary"
leave_a_comment: "Leave a comment"
@ -1055,9 +1055,8 @@ en:
intro_header: Welcome to OpenStreetMap!
intro_text: OpenStreetMap is a map of the world, created by people like you and free to use under an open license.
intro_2_create_account: "Create a user account"
partners_html: "Hosting is supported by %{ucl}, %{bytemark}, %{ic}, and other %{partners}."
hosting_partners_html: "Hosting is supported by %{ucl}, %{bytemark}, and other %{partners}."
partners_ucl: "UCL"
partners_ic: "Imperial College London"
partners_bytemark: "Bytemark Hosting"
partners_partners: "partners"
osm_offline: "The OpenStreetMap database is currently offline while essential database maintenance work is carried out."
@ -2006,7 +2005,7 @@ en:
heading: "The user %{user} does not exist"
body: "Sorry, there is no user with the name %{user}. Please check your spelling, or maybe the link you clicked is wrong."
deleted: "deleted"
view:
show:
my diary: My Diary
new diary entry: new diary entry
my edits: My Edits
@ -2168,7 +2167,7 @@ en:
not_a_friend: "%{name} is not one of your friends."
filter:
not_an_administrator: "You need to be an administrator to perform that action."
list:
index:
title: Users
heading: Users
showing:

View file

@ -246,7 +246,7 @@ eo:
user: Uzanto
comment: Komenti
area: Areo
list:
index:
title: Ŝanĝaroj
title_user: Ŝanĝaroj de %{user}
title_friend: Ŝanĝaroj de miaj amikoj
@ -271,7 +271,7 @@ eo:
new:
title: Nova taglibra afiŝo
publish_button: Publiki
list:
index:
title: Taglibroj de uzantoj
title_friends: Taglibroj de amikoj
title_nearby: Taglibroj de proksimaj uzantoj
@ -294,7 +294,7 @@ eo:
use_map_link: uzi mapon
save_button: Konservi
marker_text: Kie krei la afiŝon
view:
show:
title: Taglibro de %{user} | %{title}
user_title: Taglibro de %{user}
leave_a_comment: Komenti
@ -2054,7 +2054,7 @@ eo:
body: Bedaŭrinde, ne ekzistas uzanto kun la nomo %{user}. Bonvolu kontroli pri
liter-eraroj, aŭ eble vi alklakis mis-ligilon.
deleted: forigita
view:
show:
my diary: Mia taglibro
new diary entry: nova taglibra afiŝo
my edits: Miaj redaktoj
@ -2229,7 +2229,7 @@ eo:
not_a_friend: '%{name} ne estas amiko via.'
filter:
not_an_administrator: Vi devas esti administranto por fari tion.
list:
index:
title: Uzantoj
heading: Uzantoj
showing:

View file

@ -281,7 +281,7 @@ es:
user: Usuario
comment: Comentario
area: Área
list:
index:
title: Conjuntos de cambios
title_user: Conjunto de cambios por %{user}
title_friend: Conjuntos de cambios realizados por mis amigos
@ -308,7 +308,7 @@ es:
new:
title: Nueva entrada en el diario
publish_button: Publicar
list:
index:
title: Diarios de usuarios
title_friends: Diarios de amigos
title_nearby: Diarios de usuarios cercanos
@ -331,7 +331,7 @@ es:
use_map_link: usar mapa
save_button: Guardar
marker_text: Lugar de la entrada del diario
view:
show:
title: Diario de %{user} | %{title}
user_title: Diario de %{user}
leave_a_comment: Dejar un comentario
@ -1793,6 +1793,8 @@ es:
trace_uploaded: Tu archivo GPX ha sido subido y está pendiente de inserción
en la base de datos. Esto normalmente ocurre en la próxima media hora, y se
te enviará un correo electrónico al terminar.
upload_failed: Lo sentimos, no se ha podido subir el GPX. Un administrador ha
sido alertado del error. Por favor, inténtalo de nuevo.
traces_waiting:
one: Tienes %{count} traza esperando por subir. Por favor, considera esperar
a que esta termine antes de subir más, para no bloquear la cola a otros
@ -1817,6 +1819,8 @@ es:
save_button: Guardar cambios
visibility: 'Visibilidad:'
visibility_help: ¿Qué significa esto?
update:
updated: Traza actualizada
trace_optionals:
tags: Etiquetas
show:
@ -2136,7 +2140,7 @@ es:
body: Lo sentimos, no existe ningún usuario con el nombre %{user}. Por favor,
verifica las letras, o tal vez el vínculo en el que has hecho click está equivocado.
deleted: borrado
view:
show:
my diary: Mi diario
new diary entry: nueva entrada de diario
my edits: Mis ediciones
@ -2318,7 +2322,7 @@ es:
not_a_friend: '%{name} no es uno de tus amigos.'
filter:
not_an_administrator: Necesitas ser administrador para ejecutar esta acción.
list:
index:
title: Usuarios
heading: Usuarios
showing:

View file

@ -238,7 +238,7 @@ et:
user: Kasutaja
comment: Kommentaar
area: Ala
list:
index:
title: Muudatuskogumid
title_user: Kasutaja %{user} muudatuskogumid
title_friend: Sõprade muudatuskogumid
@ -263,7 +263,7 @@ et:
new:
title: Uus päeviku sissekanne
publish_button: Avalda
list:
index:
title: Kasutajate päevikud
title_friends: Sõprade päevikud
title_nearby: Lähedalasuvate kasutajate päevikud
@ -286,7 +286,7 @@ et:
use_map_link: kasuta kaarti
save_button: Salvesta
marker_text: Päeviku sissekande tegemise asukoht
view:
show:
title: Kasutaja %{user} päevik | %{title}
user_title: Kasutaja %{user} päevik
leave_a_comment: Kommenteeri
@ -1767,7 +1767,7 @@ et:
heading: Kasutajat %{user} pole olemas
body: Vabandust, kuid kasutaja nimega %{user} puudub. Palun kontrolli kirjapilti.
Võimalik, et link, millele klõpsasid, on vigane.
view:
show:
my diary: Minu päevik
new diary entry: uus päevikusissekanne
my edits: Minu muudatused
@ -1942,7 +1942,7 @@ et:
not_a_friend: '%{name} ei ole üks sinu sõpradest.'
filter:
not_an_administrator: Selle tegevuse sooritamiseks pead sa olema administraator.
list:
index:
title: Kasutajad
heading: Kasutajad
showing:

View file

@ -8,6 +8,7 @@
# Author: EukeneFL
# Author: Gorkaazk
# Author: Iñaki LL
# Author: Maite
# Author: Mikel Ibaiba
# Author: MikelEH
# Author: PerroVerd
@ -251,7 +252,7 @@ eu:
user: Erabiltzailea
comment: Iruzkina
area: Eremua
list:
index:
title: Aldaketak
title_user: '%{user}k egindako aldaketak'
title_friend: Nire lagunek egindako aldaketak
@ -277,7 +278,7 @@ eu:
new:
title: Eguneroko Sarrera Berria
publish_button: Argitaratu
list:
index:
title: Erabiltzaileen egunerokoak
title_friends: Lagunen egunerokoak
title_nearby: Hurbileko erabiltzaileen egunerokoak
@ -300,7 +301,7 @@ eu:
use_map_link: erabili mapa
save_button: Gorde
marker_text: Eguneroko sarrera helbidea
view:
show:
title: '%{user}(r)en egunerokoa | %{title}'
user_title: '%{user}(r)en egunerokoa'
leave_a_comment: Iruzkin bat utzi
@ -1748,6 +1749,8 @@ eu:
upload_trace: GPS Aztarna igo
trace_uploaded: Zure GPX fitxategia kargatu da eta datu basean sartzeko zain
dago. Ordu erdi barru egongo da eta posta elektronikoz bidaliko zaizu amaitzean.
upload_failed: Barkatu, GPX-aren kargak huts egin du. Administratzaile bat akatsaz
ohartarazi da. Mesedez berriz saiatu
traces_waiting:
one: '%{count} aztarna daukazu kargatzeko zain. Kontutan hartu gehiago igotzeko
agindua ez ematea zain zauden bitartean, beste erabiltzaile batzuei ilarak
@ -1772,6 +1775,8 @@ eu:
save_button: Aldaketak gorde
visibility: Ikusgarritasuna;
visibility_help: Zer esan nahi du honek?
update:
updated: Bilaketa eguneratua
trace_optionals:
tags: Etiketak
show:
@ -2087,7 +2092,7 @@ eu:
body: Barkatu, ez dago %{user} izenarekin erabiltzailerik. Egiaztatu ortografia,
edo agian egin duzun esteka gaizki dago.
deleted: ezabatua
view:
show:
my diary: Nire egunerokoa
new diary entry: eguneroko sarrera berria
my edits: Nire aldaketak
@ -2264,7 +2269,7 @@ eu:
not_a_friend: '%{name} ez da zure laguna.'
filter:
not_an_administrator: Ekintza hori burutzeko administratzaile izan behar duzu.
list:
index:
title: Erabiltzaileak
heading: Erabiltzaileak
showing:

View file

@ -68,7 +68,7 @@ fa:
tracetag: برچسب رد
user: کاربر
user_preference: ترجیحات کاربر
user_token: رمزینهٔ کاربر
user_token: توکن کاربر
way: راه
way_node: گره راه
way_tag: برچسب راه
@ -228,9 +228,9 @@ fa:
open_title: 'یادداشت حل‌نشده #%{note_name}'
closed_title: 'یادداشت حل‌شده #%{note_name}'
hidden_title: 'یادداشت پنهان #%{note_name}'
open_by: ایجاد شده توسط %{user} <abbr title='%{exact_time}'>%{when} قبل </abbr>
open_by_anonymous: ایجاد شده توسط ناشناس <abbr title='%{exact_time}'>%{when}
قبل</abbr>
open_by: <abbr title='%{exact_time}'>%{when} قبل </abbr> %{user} ایجادش کرد
open_by_anonymous: <abbr title='%{exact_time}'>%{when} قبل</abbr> فرد ناشناس
ایجادش کرد.
commented_by: نظر از %{user}،‏ <abbr title='%{exact_time}'>%{when} قبل</abbr>
commented_by_anonymous: نظر از ناشناس، <abbr title='%{exact_time}'>%{when} قبل</abbr>
closed_by: '%{user} آن را حل کرد، <abbr title=''%{exact_time}''>%{when} قبل</abbr>'
@ -262,7 +262,7 @@ fa:
user: کاربر
comment: نظر
area: منطقه
list:
index:
title: تغییرات انجام شده
title_user: تغییرات انجام شده توسط %{user}
title_friend: تغییرات انجام شده توسط دوستان من
@ -288,7 +288,7 @@ fa:
new:
title: روزنوشت جدید
publish_button: انتشار
list:
index:
title: روزنوشت‌های کاربران
title_friends: روزنوشت‌های دوستان
title_nearby: روزنوشت‌های کاربران نزدیک
@ -311,7 +311,7 @@ fa:
use_map_link: استفاده از نقشه
save_button: ذخیره
marker_text: مکان روزنوشت
view:
show:
title: روزنوشت %{user} | %{title}
user_title: روزنوشت‌های %{user}
leave_a_comment: ارسال نظر
@ -339,6 +339,7 @@ fa:
comment_from: نظر از %{link_user} در %{comment_created_at}
hide_link: پنهان کردن این نظر
confirm: تأیید
report: گزارش این نظر
location:
location: 'مکان:'
view: نمایش
@ -919,12 +920,18 @@ fa:
index:
reported_user: کاربر گزارش‌شده
reports: گزارش‌ها
last_updated_time_html: <abbr title='%{title}'>%{time} پیش</abbr>
last_updated_time_user_html: <abbr title='%{title}'>%{time} پیش</abbr> توسط
%{user}
link_to_reports: نمایش گزارش‌ها
reports_count:
one: 1 گزارش
other: '%{count} گزارش'
reported_item: گزارش‌ها
update:
new_report: گزارشتان با موفقیت ثبت شد
successful_update: گزارشتان با موفقیت به‌روز شد
provide_details: لطفاً جزئیات لازم را ارائه دهید
show:
reports:
zero: گزارشی نیست
@ -934,6 +941,9 @@ fa:
new_reports: گزارش‌های تازه
reports:
reported_by_html: '%{user} آن را به‌عنوان %{category} گزارش کرد'
helper:
reportable_title:
note: یادداشت %{note_id}
reports:
new:
title_html: گزارش %{link}
@ -946,6 +956,9 @@ fa:
diary_comment:
spam_label: این نظر (بر روزنوشت) هرزنامه است/دارد
threat_label: این نظر (بر روزنوشت) تهدیدآمیز است
note:
spam_label: این یادداشت هرزنامه است
abusive_label: این یادداشت زشت است
create:
successful_report: گزارشتان با موفقیت ثبت شد
layouts:
@ -1071,23 +1084,23 @@ fa:
anonymous: کاربر ناشناس
greeting: ‎سلام ،
commented:
subject_own: '[OpenStreetMap] %{commenter} روی یکی از یادداشت‌هایتان نظر داده
است'
subject_own: '[OpenStreetMap] %{commenter} روی یکی از یادداشت‌های شما نظر
داده است'
subject_other: '[OpenStreetMap] %{commenter} روی یادداشت موردعلاقه‌تان نظر
داده'
your_note: '%{commenter} روی یکی از یادداشت‌های شما روی نقشه نزدیک %{place}
نظر گذاشت.'
your_note: '%{commenter} روی یکی از یادداشت‌های شما روی نقشه نزدیک به %{place}
نظر گذاشته.'
commented_note: '%{commenter} روی یک از یادداشت‌های نقشه که شما بر آن نظر
داده‌اید نظر داد. این یادداشت نزدیک %{place} است.'
داده‌اید نظر داد. این یادداشت نزدیک به %{place} است.'
closed:
subject_own: '[OpenStreetMap] %{commenter} یکی از یادداشت‌های شما را حل کرده
است'
subject_other: '[OpenStreetMap] %{commenter} یکی از یادداشت‌های موردعلاقه
subject_other: '[OpenStreetMap] %{commenter} یکی از یادداشت‌های موردعلاقهٔ
شما را حل کرد'
your_note: '%{commenter} یکی از یادداشت‌های شما بر نقشه در نزدیکی %{place}
را حل کرد.'
commented_note: '%{commenter} یکی از یادداشت‌های نقشه که شما بر آن نظر گذاشته‌اید
را حل کرد. یادداشت نزدیک %{place} است.'
را حل کرد. یادداشت نزدیک به %{place} است.'
reopened:
subject_own: '[OpenStreetMap] %{commenter} یکی از یادداشت‌های شما را دوباره
فعال کرد'
@ -1096,7 +1109,7 @@ fa:
your_note: '%{commenter} یکی از یادداشت‌های شما بر نقشه در نزدیکی %{place}
را دوباره فعال کرد.'
commented_note: '%{commenter} یکی از یادداشت‌های نقشه را که شما بر آن نظر
گذاشته‌اید دوباره فعال کرد. یادداشت نزدیک %{place} است.'
گذاشته‌اید دوباره فعال کرد. یادداشت نزدیک به %{place} است.'
details: اطلاعات بیشتر درباره این یادداشت را در %{url} ببینید.
changeset_comment_notification:
hi: سلام %{to_user}،
@ -1588,7 +1601,7 @@ fa:
add_a_note:
title: زمانی برای ویرایش ندارید؟ یادداشت اضافه کنید!
paragraph_1_html: "اگر میخواهید فقط چیز کوچکی را درست کنید و زمانی برای ثبت
نام و یادگیری ویرایش ندارید، به‌راحتی \nیک یادداشت بنویسید."
نام و یادگیری ویرایش ندارید، به‌آسانی \nیک یادداشت بنویسید."
paragraph_2_html: |-
فقط بروید به <a href='%{map_url}'>نقشه</a> و روی آیکون یادداشت کلیک کنید:
<span class='icon note'></span>. اینجوری یک علامت گذار به نقشه اضافه می‌شود، که می‌توانید با کشیدن جابجایش کنید. پیامتان را اضافه کنید، بعد روی ذخیره کلیک کنید، و سایر نقشه کشان بررسی خواهند کرد.
@ -1716,17 +1729,18 @@ fa:
require_moderator:
not_a_moderator: برای انجام آن عمل نیاز هست مدیر باشید.
setup_user_auth:
blocked: دسترسی شما به API مسدود شده. برای یافتن اطلاعات بیشتر لطفاً وارد رابط
کاربری وب شوید.
blocked: دسترسی شما به API مسدود شده. برای یافتن اطلاعات بیشتر لطفاً به رابط
کاربری وب وارد شوید (log in).
need_to_see_terms: دسترسی شما به API بطور موقت معلق شده‌است. برای مشاهدهٔ شرایط
شرکت‌کننده لطفاً وارد رابط کاربری وب شوید. نیاز به موافقت شما نیست، ولی باید
حتماً آن‌ٰها را ببینید.
oauth:
authorize:
title: دسترسی اجازه دادن به حسابتان
request_access: برنامهٔ %{app_name}%{app_name} درخواست دسترسی به حسابتان %{user}
را دارد. لطفاً بررسی کنید که می‌خواهید برنامه به قابلیت‌های زیر دسترسی داشته
باشد. ممکن است چند تا یا فقط تعدادی را که دوست دارید انتخاب کنید.
title: اجازهٔ دسترسی به حسابتان را صادر کنید
request_access: برنامهٔ %{app_name}%{app_name} درخواست دسترسی به حساب کاربری
شما را دارد (%{user}). لطفاً بررسی کنید که آیا مایلید برنامه به قابلیت‌های
زیر دسترسی داشته باشد. می‌توانید همه یا فقط مواردی را که دوست دارید انتخاب
کنید.
allow_to: 'به برنامه کارخواه اجازه بده که:'
allow_read_prefs: خواندن ترجیحات کاربری شما.
allow_write_prefs: تغییر ترجیحات کاربری شما.
@ -1735,17 +1749,17 @@ fa:
allow_read_gpx: خواندن ردهای GPS شخصی شما.
allow_write_gpx: بارگذاری ردهای GPS
allow_write_notes: اصلاح یادداشت‌ها.
grant_access: امکان دسترسی
grant_access: دسترسی می‌دهم
authorize_success:
title: درخواست اجازه دادن مجاز است
title: درخواست صدور مجوز انجام شد
allowed: شما به برنامه ی %{app_name} اجازه ی دسترسی به حسابتان را دادید.
verification: کد تأیید %{code} است.
authorize_failure:
title: درخواست اجازه دادن انجام نشد
title: درخواست صدور مجوز انجام نشد
denied: شما به برنامه ی %{app_name} اجازه ی دسترسی به حسابتان را ندادید.
invalid: نشانه مجوز معتبر نیست.
invalid: توکن مجوز معتبر نیست.
revoke:
flash: شما نشانه را برای %{application} باطل کردید
flash: توکن مربوط %{application} را باطل کردید
oauth_clients:
new:
title: ثبت‌نام یک برنامهٔ تازه
@ -1757,7 +1771,7 @@ fa:
title: جزئیات OAuth برای %{app_name}
key: 'کلید مصرف کننده:'
secret: 'کد مخفی مصرف کننده:'
url: 'آدرس درخواست نشانه:'
url: 'نشانی توکنِ درخواست:'
access_url: 'آدرس دسترسی نشانه:'
authorize_url: 'آدرس authorise:'
support_notice: ما امضا های HMAC-SHA1 (پیشنهاد شده) و RSA-SHA1 را پشتیبانی می
@ -1776,14 +1790,14 @@ fa:
index:
title: جزئیات OAuth من
my_tokens: نرم‌افزارهای مجاز من
list_tokens: 'مجوزهای زیر با نام شما برای برنامه‌های زیر صادر شده است:'
list_tokens: 'توکن‌های زیر با نام شما برای برنامه‌های زیر صادر شده است:'
application: نام برنامه
issued_at: تاریخ صدور
revoke: باطل کردن!
revoke: باطل شود!
my_apps: برنامه‌های کارخواه (client) من
no_apps: آیا برنامه‌ای دارید که می‌خواهید به‌وسیله استاندارد %{oauth} ثبتش کنید
تا با ما از آن استفاده کنید؟ قبل از اینکه برنامه‌تان بتواند درخواست‌های OAuth
را انجام دهد باید برنامه تحت وب خود را ثبت نام کنید.
no_apps: آیا برنامه‌ای دارید که می‌خواهید به‌وسیلهٔ استاندارد %{oauth} ثبتش
کنید تا با ما از آن استفاده کنید؟ قبل از اینکه برنامه‌تان بتواند درخواست‌های
OAuth را انجام دهد باید آن را ثبت کنید.
registered_apps: 'شما برنامه‌های کارخواه (client) زیر را ثبت کرده‌اید:'
register_new: برنامه‌تان را ثبت کنید
form:
@ -1884,7 +1898,7 @@ fa:
confirm password: 'تأیید گذرواژه:'
reset: تنظیم مجدد کلمه عبور
flash changed: کلمه عبور شما تغییر کرده است.
flash token bad: نشانه را نیافتید؟ آدرس را برسی کنید شاید یافتید.
flash token bad: توکن را نیافتید؟ نشانی را بررسی کنید شاید یافتید.
new:
title: ثبت نام
no_auto_account_create: متأسفانه در حال حاضر برای ما امکان ساخت خودکار حساب
@ -1895,8 +1909,8 @@ fa:
about:
header: رایگان و قابل ویرایش
html: |-
<p>بر خلاف سایر نقشه‌ها، OpenStreetMap کاملاً توسط افرادی مثل شما ساخته‌شده و برای تعمیر، به‌روزرسانی، دریافت و استفاده برای هر کسی آزاد است.</p>
<p>برای شروع کمک ثبت نام کنید. برای تأیید حساب‌تان ایمیلی می‌فرستیم.</p>
<p>بر خلاف سایر نقشه‌ها، OpenStreetMap کاملاً توسط افرادی مثل شما ساخته‌شده و اصلاح، به‌روزرسانی، بارگیری و استفادهٔ آن برای همه آزاد است.</p>
<p>برای شروع همکاری ثبت نام کنید. برای تأیید حساب ایمیلی برای شما می‌فرستیم.</p>
license_agreement: وقتی ایمیلتان را تایید کردید نیاز است که با <a href="https://www.osmfoundation.org/wiki/License/Contributor_Terms">شرایط
همکاری</a> موافقت کنید.
email address: 'آدرس ایمیل:'
@ -1943,7 +1957,7 @@ fa:
body: با عرض پوزش، هیچ کاربری با نام %{user} وجود ندارد. لطفاً نحوه نوشتن تان
را بررسی کنید، یا شاید پیوندی که کلیک کردید اشتباه است.
deleted: حذف شده
view:
show:
my diary: روزنوشت من
new diary entry: روزنوشت تازه
my edits: ویرایش های من
@ -1954,7 +1968,7 @@ fa:
my settings: تنظیمات من
my comments: نظرات من
oauth settings: تنظیمات oauth
blocks on me: بلوک های بر من
blocks on me: مسدودی‌های من
blocks by me: بوک های توسط من
send message: ارسال پیام
diary: روزنوشت
@ -1979,9 +1993,10 @@ fa:
if set location: مکان خانه‌تان را در صفحهٔ %{settings_link} تنظیم کنید تا کاربران
نزدیکتان را ببینید.
settings_link_text: تنظیمات
my friends: دوستان من
no friends: شما هنوز هیچ دوستی اضافه نکرده‌اید
km away: '%{count} کیلومتر فاصله'
m away: '%{count} متر فاصله'
km away: %{count} کیلومتر فاصله
m away: %{count} متر فاصله
nearby users: دیگر کاربران نزدیک
no nearby users: در این حوالی هیچ کاربری نقشه ترسیم نکرده است
role:
@ -1993,10 +2008,10 @@ fa:
revoke:
administrator: لغو دسترسی سرپرست
moderator: لغو دسترسی مدیر
block_history: بلوک شده های فعال
moderator_history: بلوک های گرفته شده
block_history: مسدودی‌های فعال
moderator_history: مسدودکردن‌ها
comments: نظرات
create_block: بلوک کردن این کاربر
create_block: این کاربر مسدود شود
activate_user: فعال کردن این کاربر
deactivate_user: غیر فعال کردن این کاربر
confirm_user: تأیید این کاربر
@ -2099,7 +2114,7 @@ fa:
دهید.
button: تأیید
success: تغییر ایمیل شما تأیید شد!
failure: یک آدرس ایمیل با این نشانه قبلاً تأیید شده است.
failure: یک آدرس ایمیل با این توکن قبلاً تأیید شده است.
unknown_token: کد تأیید منقضی شده یا وجود ندارد.
set_home:
flash success: موقعیت خانه با موفقیت ذخیره شد
@ -2118,7 +2133,7 @@ fa:
not_a_friend: '%{name} یکی از دوستان شما نیست.'
filter:
not_an_administrator: برای انجام آن عملیات نیاز هست که سرپرست باشید
list:
index:
title: کاربران
heading: کاربران
showing:
@ -2178,103 +2193,102 @@ fa:
و نقش اطمینان حاصل نمایید.
user_blocks:
model:
non_moderator_update: برای بروزرسانی یا ایجاد بلوک باید یک مدیر بود.
non_moderator_revoke: برای لغو یک بلوک باید مدیر بود.
non_moderator_update: برای به‌روزرسانی یا ایجاد مسدودی باید مدیر بود.
non_moderator_revoke: برای لغو یک مسدودی باید مدیر بود.
not_found:
sorry: پوزش، بلوک کاربر با شناسه %{id} یافت نمی شود.
sorry: پوزش، مسدودی کاربر با شناسه %{id} یافت نمی‌شود.
back: بازگشت به فهرست
new:
title: ایجاد بلوک در %{name}
heading: ایجاد بلوک در %{name}
reason: دلیل اینکه چرا %{name} بلوک شده است. لطفاً آرام باشید و تا جایی که ممکن
است معقول و منطقی باشید، تا جایی که میتوانید دربارهٔ وضعیت اطلاع دهید، این
را به خاطر داشته باشید که این پیام به‌صورت عمومی پدیدار است. به یاد داشته
باشید همهٔ کاربران اصطلاحات خاص انجمن را نمی‌فهمند، پس لطفاً سعی کنید از شرایط
تازه‌واردان استفاده کنید.
period: چه مدت، الان شروع شود، کاربر از API بلوک می‌شود برای.
submit: ایجاد بلوک
title: در حال مسدودکردن %{name}
heading: مسدودکردن %{name}
reason: |-
دلیل مسدودشدن کاربری %{name}. لطفاً خونسرد و منطقی باشید و هرچه می‌توانید به‌شکل جزئی‌تر اوضاع را شرح دهید و همچنین به یاد داشته باشید که پیام شما به‌طور عمومی قابل مشاهده است.
در نظر داشته باشید که همهٔ کاربران اصطلاحات تخصصی انجمن را نمی‌فهمند، لطفاً سعی کنید واژه‌هایی که استفاده می‌کنید غیرتخصصی باشد.
period: مدت‌زمان مسدودی کاربر از API (شروع از حالا).
submit: ایجاد مسدودی
tried_contacting: من با کاربر تماس گرفته و درخواست کردم توقف کند.
tried_waiting: من مقدار مناسبی زمان را به کاربر دادم تا به این ارتباط پاسخ دهد.
needs_view: کاربر قبل از پاک شدن این بلوک نیاز به وارد شدن دارد
back: مشاهده تمام بلوک ها
needs_view: برای پاک‌شدن این مسدودی کاربر باید وارد حسابش شود.
back: دیدن تمام مسدودی‌ها
edit:
title: ویرایش بلوک در %{name}
heading: ویرایش بلوک در %{name}
reason: دلیل اینکه چرا %{name} بلوک شده است. لطفاً آرام باشید و تا جایی که ممکن
است معقول و منطقی باشید، تا جایی که می‌توانید دربارهٔ وضعیت اطلاع دهید. به
یاد داشته باشید همهٔ کاربران اصطلاحات خاص انجمن را نمی‌فهمند، پس لطفاً سعی
کنید از شرایط تازه‌واردان استفاده کنید.
period: چه مدت، الان شروع شود، کاربر از API بلوک می‌شود برای.
submit: به روز رسانی بلوک
show: مشاهده این بلوک
back: مشاهده تمام بلوک ها
needs_view: چرا قبل از پاک کردن این بلوک کاربر نیاز به وارد شدن دارد؟
title: ویرایش مسدودی کاربر %{name}
heading: ویرایش مسدودی %{name}
reason: دلیل مسدودشدن کاربری %{name}. لطفاً خونسرد و منطقی باشید و هرچه می‌توانید
به‌شکل جزئی‌تر اوضاع را شرح دهید. در نظر داشته باشید که همهٔ کاربران اصطلاحات
تخصصی انجمن را نمی‌فهمند، لطفاً سعی کنید واژه‌هایی که استفاده می‌کنید غیرتخصصی
باشد.
period: مدت‌زمان مسدودی کاربر از API (شروع از حالا).
submit: به‌روزرسانی مسدودی
show: مشاهده این مسدودی
back: دیدن تمام مسدودی‌ها
needs_view: آیا قبل از پاک‌شدن این مسدودی، کاربر باید وارد حساب کاربری شود؟
filter:
block_expired: بلوک قبلا منقضی شده و قابل ویرایش نیست.
block_period: دوره ی بلوک کردن باید یکی از مقدار های قابل انتخاب در لیست بازشو
باشد.
block_expired: مسدودی قبلا منقضی شده و قابل ویرایش نیست.
block_period: دوره مسدودی باید یکی از مقدارهای قابل انتخاب در لیست بازشو باشد.
create:
try_contacting: لطفاً قبل از بلوک کردن با کاربر تماس بگیرید و به آنها زمان مناسب
دهید تا پاسخ دهند.
try_waiting: لطفاً به کاربر زمان کافی دهید تا قبل از بسته‌شدن بتواند پاسخگو
try_contacting: لطفاً قبل از مسدودکردن کاربر با وی تماس بگیرید و به او زمان
بدهید تا پاسخگو باشد.
try_waiting: لطفاً پیش از مسدودکردن کاربر به او زمان کافی بدهید تا بتواند پاسخگو
باشد.
flash: یک بلوک روی کاربر %{name} ایجاد شد.
flash: یک مسدودی روی کاربری %{name} ایجاد شد.
update:
only_creator_can_edit: فقط مدیری که این بلوک را ایجاد کرده میتواند آنرا ویرایش
only_creator_can_edit: فقط مدیری که این مسدودی را ایجاد کرده می‌تواند آنرا ویرایش
کند.
success: بلوک بروزرسانی شد.
success: مسدودی به‌روزرسانی شد.
index:
title: بلوک های کاربر
heading: لیست بلوک های کاربر
empty: هنوز بلوکی ساخته نشده.
title: مسدودی‌های کاربر
heading: لیست مسدودی‌های کاربری
empty: هنوز مسدودیتی ساخته نشده.
revoke:
title: لغو بلوک در %{block_on}
heading: لغو بلوک در %{block_on} توسط %{block_by}
time_future: این بلوک در %{time} پایان می یابد.
past: این بلوک %{time} پایان یافته و اکنون قابل لغو کردن نیست.
confirm: مطمئنید میخواهید این بلوک را لغو کنید؟
revoke: باطل کردن!
flash: این بلوک باطل شد.
title: لغو مسدودی از %{block_on}
heading: لغو مسدودی از %{block_on}، مسدودشده توسط %{block_by}
time_future: این مسدودی در %{time} پایان می یابد.
past: این مسدودی %{time} پیش پایان یافته و اکنون قابل لغوکردن نیست.
confirm: مطمئنید می‌خواهید این مسدودی را لغو کنید؟
revoke: باطل شود!
flash: این مسدودی لغو شد.
period:
one: 1 ساعت
other: '%{count} ساعت'
helper:
time_future: در %{time} پایان می پذیرد.
until_login: فعال تا وقتی کاربر وارد شود.
time_past: به پایان رسیده %{time} قبل.
time_future_and_until_login: تا %{time} دیگر و پس از ورود به حساب کاربری پایان
می‌یابد.
time_past: '%{time} پیش به پایان رسید.'
blocks_on:
title: بلوک ها در %{name}
heading: فهرست بلوک ها در %{name}
empty: '%{name} هنوز بلوک نشده.'
title: مسدودی‌های کاربری %{name}
heading: فهرست مسدودی‌های %{name}
empty: '%{name} تاکنون مسدود نبوده.'
blocks_by:
title: بلوک توسط %{name}
heading: فهرست بلوک توسط %{name}
empty: '%{name} هنوز بلوکی ایجاد نکرده.'
title: مسدودشده‌ها توسط %{name}
heading: فهرست مسدودشده‌ها توسط %{name}
empty: '%{name} تاکنون مسدود نکرده.'
show:
title: '%{block_on} توسط %{block_by} بلوک شده'
heading: '%{block_on} توسط %{block_by} بلوک شده'
title: '%{block_on} توسط %{block_by} مسدود شده'
heading: '%{block_on} توسط %{block_by} مسدود شده'
time_future: در %{time} پایان می پذیرد
time_past: به پایان رسیده %{time} قبل
time_past: '%{time} پیش به پایان رسید'
created: ایجاد شده
ago: '%{time} پیش'
status: وضعیت
show: نمایش
edit: ویرایش
revoke: باطل کردن!
revoke: باطل شود!
confirm: آیا مطمئن هستید؟
reason: 'دلیل بلوک:'
back: مشاهده تمام بلوک ها
reason: 'دلیل مسدودی:'
back: دیدن تمام مسدودی‌ها
revoker: 'باطل کننده:'
needs_view: کاربر قبل از پاک شدن این بلوک نیاز به وارد شدن دارد.
needs_view: برای پاک‌شدن این مسدودی کاربر باید وارد حسابش شود.
block:
not_revoked: (باطل نشده)
show: نمایش
edit: ویرایش
revoke: باطل کردن!
revoke: باطل شود!
blocks:
display_name: کاربر بلوک شده
display_name: کاربر مسدودشده
creator_name: ایجاد کننده
reason: دلیل بلوک
reason: دلیل مسدودی
status: وضعیت
revoker_name: باطل شده توسط
showing_page: صفحهٔ %{page}
@ -2315,7 +2329,7 @@ fa:
javascripts:
close: بستن
share:
title: به‌اشتراک‌گذاری
title: هم‌رسانی
cancel: لغو
image: تصویر
link: پیوند یا اچ‌تی‌ام‌ال
@ -2368,7 +2382,7 @@ fa:
createnote_disabled_tooltip: برای افزودن یادداشت به نقشه بزرگنمایی کنید
map_notes_zoom_in_tooltip: برای دیدن یادداشت‌های نقشه بزرگنمایی کنید
map_data_zoom_in_tooltip: برای دیدن داده‌های نقشه بزرگنمایی کنید
queryfeature_tooltip: کوئری ویژگی‌ها
queryfeature_tooltip: پرس‌وجوی ویژگی‌ها
queryfeature_disabled_tooltip: برای پرس‌وجوی ویژگی‌ها بزرگنمایی کنید
changesets:
show:
@ -2474,33 +2488,33 @@ fa:
redactions:
edit:
description: شرح
heading: ویرایش کردن ویرایش
heading: بازویرایی ویرایش
submit: ذخیره ویرایش
title: ویرایش کردن ویرایش
title: بازویرایی ویرایش
index:
empty: ویرایشی برای نشان دادن نیست.
heading: فهرست ویرایش ها
title: فهرست ویرایش ها
heading: سیاههٔ بازویراسته‌ها(redactions)
title: فهرست ویرایش‌های حذف‌شده
new:
description: شرح
heading: اطلاعات را برای ویرایش جدید وارد کنید
heading: اطلاعات را برای بازویرایی جدید وارد کنید
submit: ایجاد ویرایش
title: ایجاد ویرایش جدید
title: ایجاد بازویرایی جدید
show:
description: 'شرح:'
heading: نمایش ویرایش %{title}
heading: نمایش بازویرایستهٔ %{title}
title: نمایش دادن ویرایش
user: 'ایجاد کننده:'
edit: ویرایش این ویرایش
edit: ویرایش این بازویراسته
destroy: حذف این ویرایش
confirm: آیا مطمئن هستید؟
create:
flash: ویرایش پاک شد.
flash: بازویراسته ایجاد شد.
update:
flash: تغییرات ذخیره شد.
destroy:
not_empty: ویرایش خالی نیست. لطفاً همهٔ نسخه‌های متعلق به این ویرایش را در آورید
قبل از نابود کردنش.
not_empty: بازویرایی خالی نیست. لطفاً پیش از نابود کردنش، همهٔ نسخه‌های متعلق
به این بازویرایی را از بازویراستگی درآورید.
flash: ویرایش از بین رفت.
error: در حال از بین بردن این ویرایش خطایی رخ داد.
error: هنگام از بین بردن این بازویراسته خطایی رخ داد.
...

View file

@ -269,7 +269,7 @@ fi:
user: Käyttäjä
comment: Kommentti
area: Alue
list:
index:
title: Muutoskokoelmat
title_user: Käyttäjän %{user} muutoskokoelmat
title_friend: Kaverieni muutoskokoelmat
@ -295,7 +295,7 @@ fi:
new:
title: Uusi päiväkirjamerkintä
publish_button: Julkaise
list:
index:
title: Käyttäjien päiväkirjamerkinnät
title_friends: Kaverien päiväkirjat
title_nearby: Lähellä olevien käyttäjien päiväkirjat
@ -318,7 +318,7 @@ fi:
use_map_link: valitse kartalta
save_button: Tallenna
marker_text: Päiväkirjamerkinnän sijainti
view:
show:
title: Käyttäjän %{user} päiväkirja | %{title}
user_title: Käyttäjän %{user} päiväkirja
leave_a_comment: Kommentoi tätä kirjoitusta
@ -1200,11 +1200,12 @@ fi:
commented_note: '%{commenter} on kommentoinut yhtä kommentoimaasi merkintää.
Merkintä on lähellä paikkaa %{place}.'
closed:
subject_own: '[OpenStreetMap] %{commenter} on selvittänyt yhden merkintäsi'
subject_other: '[OpenStreetMap] %{commenter} on selvittänyt sinua kiinnostavan
merkinnän'
your_note: '%{commenter} on selvittänyt yhden merkintäsi lähellä paikkaa %{place}'
commented_note: '%{commenter} on selvittänyt merkinnän, jota olet kommentoinut.
subject_own: '[OpenStreetMap] %{commenter} on ratkaissut karttailmoituksesi'
subject_other: '[OpenStreetMap] %{commenter} on ratkaissut sinua kiinnostavan
karttailmoituksen'
your_note: '%{commenter} on ratkaissut lähettämäsi karttailmoituksen lähellä
paikkaa %{place}.'
commented_note: '%{commenter} on ratkaissut karttailmoituksen, jota olet kommentoinut.
Merkintä on lähellä paikkaa %{place}.'
reopened:
subject_own: '[OpenStreetMap] %{commenter} on avannut karttamerkintäsi uudelleen'
@ -1215,7 +1216,7 @@ fi:
commented_note: '%{commenter} on aktivoinut karttailmoituksen uudelleen. Tämä
viesti lähetetään siksi, että olet kommentoinut tätä karttailmoitusta, joka
on lähellä paikkaa %{place}.'
details: Lisää tietoja merkinnästä löytyy osoitteesta %{url}.
details: Lisätietoja merkinnästä löytyy osoitteesta %{url}.
changeset_comment_notification:
hi: Hei %{to_user},
greeting: Hei,
@ -2086,7 +2087,7 @@ fi:
heading: Käyttäjää %{user} ei ole olemassa
body: Käyttäjää %{user} ei löytynyt. Tarkista oikeikirjoitus.
deleted: poistettu
view:
show:
my diary: Oma päiväkirja
new diary entry: uusi päiväkirjamerkintä
my edits: Omat muokkaukset
@ -2261,7 +2262,7 @@ fi:
not_a_friend: '%{name} ei ole enää kaverisi.'
filter:
not_an_administrator: Tähän toimintoon tarvitaan ylläpitäjän oikeudet.
list:
index:
title: Käyttäjät
heading: Käyttäjät
showing:

View file

@ -294,7 +294,7 @@ fr:
user: Utilisateur
comment: Commentaire
area: Zone
list:
index:
title: Groupes de modifications
title_user: Groupes de modifications par %{user}
title_friend: Groupes de modifications par mes amis
@ -322,7 +322,7 @@ fr:
new:
title: Nouvelle entrée du journal
publish_button: Publier
list:
index:
title: Journaux des utilisateurs
title_friends: Journaux des amis
title_nearby: Journaux des utilisateurs à proximité
@ -345,7 +345,7 @@ fr:
use_map_link: utiliser la carte
save_button: Enregistrer
marker_text: Emplacement de lentrée du journal
view:
show:
title: Journal de %{user} | %{title}
user_title: Journal de %{user}
leave_a_comment: Laisser un commentaire
@ -462,7 +462,7 @@ fr:
courthouse: Palais de justice
crematorium: Crématorium
dentist: Dentiste
doctors: Docteurs
doctors: Cabinet médical
drinking_water: Eau potable
driving_school: École de conduite
embassy: Ambassade
@ -2172,7 +2172,7 @@ fr:
body: Désolé, il ny a pas dutilisateur avec le nom %{user}. Veuillez vérifier
lorthographe, ou le lien que vous avez cliqué nest pas valide.
deleted: supprimé
view:
show:
my diary: Mon journal
new diary entry: nouvelle entrée dans le journal
my edits: Mes modifications
@ -2360,11 +2360,12 @@ fr:
not_a_friend: '%{name} nest pas parmi vos amis.'
filter:
not_an_administrator: Vous devez être administrateur pour effectuer cette action.
list:
index:
title: Utilisateurs
heading: Utilisateurs
showing:
other: Page %{page} (%{first_item}one= sur %{items})
one: Page %{page} (%{first_item} sur %{items})
other: Page %{page} (%{first_item}-%{last_item} sur %{items})
summary: '%{name} créé depuis %{ip_address} le %{date}'
summary_no_ip: '%{name} créé le %{date}'
confirm: Confirmer les utilisateurs sélectionnés

View file

@ -223,7 +223,7 @@ fur:
user: Utent
comment: Coment
area: Aree
list:
index:
title: Grups di cambiaments
title_user: Grups di cambiaments di %{user}
title_friend: Grups di cambiaments dai tiei amîs
@ -248,7 +248,7 @@ fur:
diary_entry:
new:
title: Gnove vôs dal diari
list:
index:
title: Diaris dai utents
title_friends: Diaris dai amîs
title_nearby: Diaris dai utents dongje
@ -271,7 +271,7 @@ fur:
use_map_link: dopre mape
save_button: Salve
marker_text: Lûc de vôs dal diari
view:
show:
title: Diari di %{user} | %{title}
user_title: Diari di %{user}
leave_a_comment: Lasse un coment
@ -1136,7 +1136,7 @@ fur:
heading: L'utent %{user} nol esist
body: Nol esist un utent di non %{user}. Controle par plasê la grafie o che
tu vedis seguît il leam just.
view:
show:
my diary: Il gno diari
new diary entry: gnove vôs dal diari
my edits: I miei cambiaments
@ -1287,7 +1287,7 @@ fur:
button: Gjave dai amîs
success: '%{name} al è stât gjavât dai tiei amîs.'
not_a_friend: '%{name} nol è un dai tiei amîs.'
list:
index:
title: Utents
heading: Utents
showing:

View file

@ -228,7 +228,7 @@ ga:
user: Úsáideoir
comment: Nóta tráchta
area: Limistéar
list:
index:
title: Tacair athruithe
title_user: Tacair athruithe de chuid %{user}
title_friend: Tacair athruithe de chuid mo chairde
@ -254,7 +254,7 @@ ga:
new:
title: Iontráil Nua Dialainne
publish_button: Foilsigh
list:
index:
title: Dialanna úsáideoirí
title_friends: Dialanna cairde
title_nearby: Dialann de chuid Úsáideoirí In Aice Láimhe
@ -277,7 +277,7 @@ ga:
use_map_link: an léarscáil a úsáid
save_button: Sábháil
marker_text: Suíomh na hiontrála dialainne
view:
show:
title: Dialann %{user} | %{title}
user_title: Dialann %{user}
leave_a_comment: Fág nóta tráchta
@ -1866,7 +1866,7 @@ ga:
no_such_user:
title: Níl an t-úsáideoir sin ann
deleted: scriosta
view:
show:
my diary: Mo Dhialann
new diary entry: iontráil nua dialainne
my edits: Mo Athruithe
@ -1971,7 +1971,7 @@ ga:
button: Cuir leis mar chara
success: Is cara leat %{name} anois!
failed: Ár leithscéal, níorbh fhéidir %{name} a chur leis mar chara.
list:
index:
title: Úsáideoirí
heading: Úsáideoirí
suspended:

View file

@ -244,7 +244,7 @@ gd:
user: Cleachdaiche
comment: Beachd
area: Raon
list:
index:
title: Seataichean atharraichean
title_user: Seataichean atharraichean le %{user}
title_friend: Seataichean atharraichean le do charaidean
@ -272,7 +272,7 @@ gd:
new:
title: Clàr ùr an leabhair-latha
publish_button: Foillsich
list:
index:
title: Leabhraichean-latha
title_friends: Leabhraichean-latha do charaidean
title_nearby: Leabhraichean-latha am fagas
@ -295,7 +295,7 @@ gd:
use_map_link: cleachd mapa
save_button: Sàbhail
marker_text: Àite clàr an leabhair-latha
view:
show:
title: An leabhar-latha aig %{user} | %{title}
user_title: An leabhar-latha aig %{user}
leave_a_comment: Thoir do bheachd
@ -1920,7 +1920,7 @@ gd:
an litreachadh no 's dòcha nach eil an ceangal air an do rinn thu briogadh
mar bu chòir.
deleted: air a sguabadh às
view:
show:
my diary: An leabhar-latha agam
new diary entry: clàr leabhair-latha ùr
my edits: Na dheasaich mi
@ -2102,7 +2102,7 @@ gd:
not_a_friend: Chan eil càirdeas eadar thu fhèin agus %{name}.
filter:
not_an_administrator: Feumaidh tu bhith 'nad rianaire gus an gnìomh seo a dhèanamh.
list:
index:
title: Cleachdaichean
heading: Cleachdaichean
showing:

File diff suppressed because it is too large Load diff

View file

@ -251,7 +251,7 @@ he:
user: משתמש
comment: הערה
area: שטח
list:
index:
title: ערכות שינויים
title_user: ערכות שינויים של %{user}
title_friend: ערכות שינויים של החברים שלי
@ -276,7 +276,7 @@ he:
new:
title: רשומת יומן חדשה
publish_button: פרסום
list:
index:
title: יומנים של המשתמש
title_friends: יומנים של חברים
title_nearby: יומנים של משתמשים בסביבה
@ -299,7 +299,7 @@ he:
use_map_link: להשתמש במפה
save_button: שמירה
marker_text: מיקום רשומת היומן
view:
show:
title: היומן של %{user}&rlm; | %{title}
user_title: היומן של %{user}
leave_a_comment: הוספת תגובה
@ -1937,7 +1937,7 @@ he:
heading: המשתמש %{user} אינו קיים
body: סליחה, אין חשבון בשם %{user}. אולי האיות לא נכון ואולי לחצת על קישור שגוי.
deleted: נמחק
view:
show:
my diary: היומן שלי
new diary entry: רשומה חדשה ביומן
my edits: העריכות שלי
@ -2110,7 +2110,7 @@ he:
not_a_friend: '%{name} לא אחד מהחברים שלך.'
filter:
not_an_administrator: צריך להיות מנהל כדי לבצע את הפעולה הזאת.
list:
index:
title: משתמשים
heading: משתמשים
showing:

View file

@ -238,7 +238,7 @@ hr:
user: Korisnik
comment: Komentar
area: Područje
list:
index:
title: Setovi promjena
title_user: Setovi promjena od %{user}
title_friend: Paketi uređivanja tvojih prijatelja
@ -264,7 +264,7 @@ hr:
new:
title: Novi zapis u dnevnik
publish_button: Objavi
list:
index:
title: Dnevnici korisnika
title_friends: Dnevnici prijatelja
title_nearby: Dnevnici obližnjih članova
@ -287,7 +287,7 @@ hr:
use_map_link: koristi kartu
save_button: Spremi
marker_text: Lokacija unosa u dnevnik
view:
show:
title: Blog korisnika %{user} | %{title}
user_title: '%{user}ov dnevnik'
leave_a_comment: Ostavi komentar
@ -1623,7 +1623,7 @@ hr:
body: Žao mi je, ne postoji korisnik s imenom %{user}. Molim provjerite ukucano
ili je link na koji ste kliknuli neispravan.
deleted: obrisano
view:
show:
my diary: Moj dnevnik
new diary entry: novi unos u dnevnik
my edits: Moje promjene
@ -1782,7 +1782,7 @@ hr:
not_a_friend: '%{name} nije tvoj prijatelj.'
filter:
not_an_administrator: Morate biti administrator za izvođenje ovih akcija.
list:
index:
title: Korisnici
heading: Korisnici
showing:

Some files were not shown because too many files have changed in this diff Show more