]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/1985'
authorTom Hughes <tom@compton.nu>
Mon, 10 Sep 2018 17:58:27 +0000 (18:58 +0100)
committerTom Hughes <tom@compton.nu>
Mon, 10 Sep 2018 17:58:27 +0000 (18:58 +0100)
16 files changed:
app/assets/stylesheets/common.scss
app/controllers/user_controller.rb
app/views/user/_user.html.erb
app/views/user/index.html.erb [moved from app/views/user/list.html.erb with 100% similarity]
config/locales/ca.yml
config/locales/en.yml
config/locales/fa.yml
config/locales/gl.yml
config/locales/km.yml
config/locales/nl.yml
config/locales/sr.yml
config/locales/sv.yml
config/locales/th.yml
config/routes.rb
test/controllers/traces_controller_test.rb
test/controllers/user_controller_test.rb

index f9214b24dba1a94dd84c129541bfefbd6e09cd7b..cf1019308dba819aba7953a6f95d84113be5fa1c 100644 (file)
@@ -1501,7 +1501,7 @@ tr.turn:hover {
 
 /* Rules for the trace view */
 
-.trace-view {
+.trace-show {
   .trace_pending {
     color: red;
   }
@@ -1585,7 +1585,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 +1712,7 @@ tr.turn:hover {
   }
 }
 
-.diary_entry-view img.user_thumbnail {
+.diary_entry-show img.user_thumbnail {
   float: left;
 }
 
index 644c62b6f99e324214c7cb62f00d76748e9cb49c..5aaa9d72b47a091a140e7a9160c4524016fd2d06 100644 (file)
@@ -14,7 +14,7 @@ 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]
@@ -488,7 +488,7 @@ class UserController < ApplicationController
 
   ##
   # display a list of users matching specified criteria
-  def list
+  def index
     if request.post?
       ids = params[:user].keys.collect(&:to_i)
 
index ad219655e949238348d6233642e9d5d3f0bf71dd..da9ae75c921b5b50c7c09df849e63649bb521252 100644 (file)
@@ -7,13 +7,13 @@
   <td>
     <p>
       <% if user.creation_ip %>
-        <%= raw t 'user.list.summary',
+        <%= 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',
+        <%= raw t 'user.index.summary_no_ip',
             :name => link_to(h(user.display_name), user_path(user)),
             :date => l(user.creation_time, :format => :friendly)
         %>
index 0afb138e136849c052be4185c32f526d39761836..070d3d316d7324467830d3a7402c23dae03b1f43 100644 (file)
@@ -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:'
index d7837f2ffda0b69b3b21ba04cc6fa28432bddfa1..7636bad034218db147949ba88fee78d2e075c985 100644 (file)
@@ -2168,7 +2168,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:
index 8e407865a76726b43b589c5f403272acb8892cf2..c96bb83866390fbc1c30c17f488fce5712743c39 100644 (file)
@@ -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: گزارشی نیست
@@ -2316,7 +2323,7 @@ fa:
   javascripts:
     close: بستن
     share:
-      title: به‌اشتراک‌گذاری
+      title: هم‌رسانی
       cancel: لغو
       image: تصویر
       link: پیوند یا اچ‌تی‌ام‌ال
@@ -2369,7 +2376,7 @@ fa:
       createnote_disabled_tooltip: برای افزودن یادداشت به نقشه بزرگنمایی کنید
       map_notes_zoom_in_tooltip: برای دیدن یادداشت‌های نقشه بزرگنمایی کنید
       map_data_zoom_in_tooltip: برای دیدن داده‌های نقشه بزرگنمایی کنید
-      queryfeature_tooltip: کوئری ویژگی‌ها
+      queryfeature_tooltip: پرس‌وجوی ویژگی‌ها
       queryfeature_disabled_tooltip: برای پرس‌وجوی ویژگی‌ها بزرگنمایی کنید
     changesets:
       show:
index 5cef45687e74beb54c050db284792a5c37223504..789184d1ad4cde5c0845a601bc0a8ba22096bdba 100644 (file)
@@ -21,7 +21,7 @@ gl:
     models:
       acl: Listaxe do control de acceso
       changeset: Conxunto de cambios
-      changeset_tag: Etiqueta do conxunto de trocos
+      changeset_tag: Etiqueta do conxunto de cambios
       country: País
       diary_comment: Comentario do diario
       diary_entry: Entrada do diario
@@ -130,11 +130,11 @@ gl:
       hidden_commented_by: Comentario oculto de %{user} <abbr title='%{exact_time}'>
         hai %{when}</abbr>
       commented_by: Comentario de %{user} <abbr title='%{exact_time}'> hai %{when}</abbr>
-      changesetxml: Conxunto de trocos XML
+      changesetxml: Conxunto de cambios do XML
       osmchangexml: osmChange XML
       feed:
         title: Conxunto de cambios %{id}
-        title_comment: Conxunto de trocos %{id} - %{comment}
+        title_comment: Conxunto de cambios %{id} - %{comment}
       join_discussion: Inicia-la sesión pra unirse á parola
       discussion: Parola
       still_open: O conxunto de cambios segue aberto - Abrirase a parola cando o conxunto
@@ -221,7 +221,7 @@ gl:
       hidden_by: Agochado por %{user} <abbr title='%{exact_time}'>hai %{when}</abbr>
       report: Informar desta nota
     query:
-      title: Consultaas características
+      title: Consulta-las características
       introduction: Prema no mapa para atopar características preto de aquí.
       nearby: Características preto de aquí
       enclosing: Características envolventes
@@ -241,22 +241,22 @@ gl:
       comment: Comentario
       area: Zona
     index:
-      title: Conxuntos de trocos
+      title: Conxuntos de cambios
       title_user: Conxuntos de cambios por %{user}
       title_friend: Conxuntos de cambios das amizades
-      title_nearby: Conxuntos de trocos dos usuarios de lugares preto de ti
+      title_nearby: Conxuntos de cambios dos usuarios de lugares preto de ti
       empty: Non se atoparon conxuntos de cambios.
       empty_area: Non hai conxuntos de cambios nesta zona.
-      empty_user: Non hai conxuntos de trocos deste usuario.
-      no_more: Non se atoparon máis conxuntos de trocos.
+      empty_user: Non hai conxuntos de cambios deste usuario.
+      no_more: Non se atoparon máis conxuntos de cambios.
       no_more_area: Non hai máis conxuntos de cambios nesta zona.
       no_more_user: Non hai máis conxuntos de cambios deste usuario.
       load_more: Cargar máis
     timeout:
-      sorry: Desculpe que levase demasiado tempo obter a listaxe de conxunto de trocos
+      sorry: Desculpe que levase moito tempo obter a listaxe do conxunto de cambios
         que solicitou.
     rss:
-      title_all: Parola de edición en OpenStreetMap
+      title_all: Parola da edición no OpenStreetMap
       title_particular: 'Parola da edición #%{changeset_id} en OpenStreetMap'
       comment: 'Novo comentario sobre os cambios #%{changeset_id} de %{author}'
       commented_at_html: Actualizado hai %{when}
@@ -286,7 +286,7 @@ gl:
       location: 'Localización:'
       latitude: 'Latitude:'
       longitude: 'Lonxitude:'
-      use_map_link: usao mapa
+      use_map_link: usa-lo mapa
       save_button: Gardar
       marker_text: Lugar da entrada do diario
     show:
@@ -1199,12 +1199,12 @@ gl:
         subject_other: '[OpenStreetMap] %{commenter} comentou nun conxunto de cambios
           no que estás interesado'
         your_changeset: '%{commenter} deixou un comentario nun dos seus conxuntos
-          de trocos xerado o %{time}'
+          de cambios xerado o %{time}'
         commented_changeset: '%{commenter} deixou un comentario nun conxunto de cambios
           do mapa que está seguindo, xerado por %{changeset_author} o %{time}'
         partial_changeset_with_comment: co comentario '%{changeset_comment}'
         partial_changeset_without_comment: sen comentarios
-      details: Pódense atopar máis detalles acerca do conxunto de trocos en %{url}.
+      details: Pódense atopar máis detalles acerca do conxunto de cambios en %{url}.
       unsubscribe: Para darse de baixa das actualizacións deste conxunto de cambios,
         olle %{url} e prema en "darse de baixa".
   messages:
@@ -1236,7 +1236,7 @@ gl:
       subject: Asunto
       body: Corpo
       send_button: Enviar
-      back_to_inbox: Volver á caixa de entrada
+      back_to_inbox: Voltar á caixa de entrada
     create:
       message_sent: Mensaxe enviada
       limit_exceeded: Estivo enviando unha morea de mensaxes recentemente. Agarde
@@ -1270,7 +1270,7 @@ gl:
       reply_button: Responder
       unread_button: Marcar como non lida
       destroy_button: Borrar
-      back: Volver
+      back: Voltar
       to: Para
       wrong_user: Accedeu ao sistema como "%{user}", pero a mensaxe que pediu ler
         non lla enviou a ese usuario ou el non lla enviou a vostede. Acceda co usuario
@@ -1332,8 +1332,8 @@ gl:
         english_link: a orixinal en inglés
       native:
         title: Acerca desta páxina
-        text: Estás vendo a versión en inglés da páxina de dereitos de autor. Pode
-          volver á %{native_link} desta páxina ou pode deixar de ler sobre os dereitos
+        text: Estás ollando a versión en inglés da páxina de dereitos de autor. Pode
+          voltar á %{native_link} desta páxina ou pode deixar de ler sobre os dereitos
           de autor e %{mapping_link}.
         native_link: versión en galego
         mapping_link: comezar a contribuír
@@ -1376,11 +1376,11 @@ gl:
           title: Exemplo de recoñecemento
         more_title_html: Máis información
         more_1_html: |-
-          Descubra máis sobre como empregar os nosos datos e como acreditarnos na <a
-          href="https://osmfoundation.org/Licence">páxina de licenza de OSMF</a>.
+          Descobra máis sobre de que xeito emprega-los nosos datos e como acreditarnos na <a
+          href="https://osmfoundation.org/Licence">páxina de licenza do OSMF</a>.
         more_2_html: |-
-          Malia que o OpenStreetMap é de datos abertos, non podemos proporcionar un
-          mapa API gratuíto aos desenvolvedores.
+          Malia que o OpenStreetMap é de datos abertos, non podemos fornecer un
+          mapa API de balde aos desenvolvedores.
           Vexa a <a href="https://operations.osmfoundation.org/policies/api/">política de uso da API</a>,
           a <a href="https://operations.osmfoundation.org/policies/tiles/">política de uso de cuadrantes</a>
           e a <a href="https://operations.osmfoundation.org/policies/nominatim/">política de uso do Nominatim</a>.
@@ -1469,12 +1469,12 @@ gl:
       not_public_description: Non pode edita-lo mapa a menos que o faga. Pode establece-las
         súas edicións coma públicas dende a súa %{user_page}.
       user_page_link: páxina de usuario
-      anon_edits_link_text: Descubra aquí o motivo.
+      anon_edits_link_text: Descobra velaquí o motivo.
       flash_player_required: Precisa un reprodutor Flash para usar Potlatch, o editor
         Flash de OpenStreetMap. Pode <a href="https://get.adobe.com/flashplayer/">descargar
         Flash do sitio Adobe.com</a>. <a href="https://wiki.openstreetmap.org/wiki/Editing">Tamén
         están dispoñíbeis outras opcións</a> para editar OpenStreetMap.
-      potlatch_unsaved_changes: Ten trocos sen gardar. (Para gardalos no Potlatch
+      potlatch_unsaved_changes: Ten cambios sen gardar. (Para gardalos no Potlatch
         ten que desmarcar o camiño actual ou o punto se está a editar no modo en vivo
         ou premer sobre o botón "Gardar".)
       potlatch2_not_configured: O Potlatch 2 non está configurado; consulte https://wiki.openstreetmap.org/wiki/The_Rails_Port
@@ -1709,7 +1709,7 @@ gl:
         paragraph_1_html: O OpenStreetMap ten unha xerga propia. Velaquí hai unhas
           palabras clave que son de utilidade.
         editor_html: Un <strong>editor</strong> é un programa ou sitio web que pode
-          usar para editar o mapa.
+          empregar para edita-lo mapa.
         node_html: Un <strong>nó</strong> é un punto no mapa, coma un restaurante
           ou unha árbore.
         way_html: Un <strong>camiño</strong> é unha liña ou área, como unha estrada,
@@ -1720,9 +1720,9 @@ gl:
       rules:
         title: Regras!
         paragraph_1_html: OpenStreetMap ten poucas regras formais, pero esperamos
-          que tódolos participantes colaboraren e se comuniquen ca comunidade. Se
-          estás a considerar algunha actividade que non sexa a edición manual, le
-          e segue as instrucións sobre <a href='https://wiki.openstreetmap.<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'></a>org/wiki/Import/Guidelines'>importacións</a>
+          que tódolos participantes contribúan e se comuniquen ca comunidade. Se estás
+          a estudar algunha actividade que non sexa a edición manual, le e segue as
+          instrucións sobre <a href='https://wiki.openstreetmap.<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'></a>org/wiki/Import/Guidelines'>importacións</a>
           e <a href='https://wiki.openstreetmap.org/wiki/Import/Automated_Edits_code_of_conduct'>edicións
           automatizadas</a>.
       questions:
@@ -1766,7 +1766,7 @@ gl:
         na base de datos. Isto adoita ocorrer nun período de tempo de media hora.
         Recibirá un correo electrónico cando remate.
       upload_failed: Desculpa, a subida GPX fallou. Avisouse a un administrador do
-        erro. Inténteo de novo.
+        erro. Ténteo de novo.
       traces_waiting:
         one: Ten %{count} pista á espera de ser cargada. Considere agardar a que remate
           antes de cargar máis para non bloquear a cola do resto de usuarios.
@@ -1878,7 +1878,7 @@ gl:
       blocked: O seu acceso á API foi bloqueado. Acceda ao sistema para atopar máis
         información na interface web.
       need_to_see_terms: O seu acceso á API está suspendido temporalmente. Acceda
-        ao sistema para ollar os termos do colaborador. Non ten que aceptalos, pero
+        ao sistema para ollar os termos do contribuínte. Non ten que aceptalos, pero
         debe coñecelos.
   oauth:
     authorize:
@@ -2058,8 +2058,8 @@ gl:
         html: |-
           <p>A diferenza doutros mapas, o OpenStreetMap está completamente creado por xente coma vostede, e calquera persoa é libre de corrixilo, actualizalo, descargalo e utilizalo.</p>
           <p>Rexístrese para comezar a contribuír. Enviarémoslle un correo electrónico para confirmar a súa conta.</p>
-      license_agreement: Cando confirme a súa conta necesitará aceptaos <a href="https://www.osmfoundation.org/wiki/License/Contributor_Terms">termos
-        do colaborador</a>.
+      license_agreement: Cando confirme a súa conta necesitará acepta-los <a href="https://www.osmfoundation.org/wiki/License/Contributor_Terms">termos
+        do contribuínte</a>.
       email address: 'Enderezo de correo electrónico:'
       confirm email address: Confirma-lo enderezo de correo electrónico
       not displayed publicly: O seu enderezo IP non se amosa publicamente, vexa a
@@ -2076,12 +2076,12 @@ gl:
       auth no password: Coa autenticación de terceiros non se precisa un contrasinal,
         aínda que hai algunhas ferramentas e servidores que aínda a solicitan.
       continue: Rexistrarse
-      terms accepted: Grazas por aceptar os novos termos do colaborador!
-      terms declined: Sentimos que decidise non aceptar os novos Termos do colaborador.
+      terms accepted: Grazas por acepta-los novos termos do contribuínte!
+      terms declined: Sentimos que decidise non acepta-los novos Termos do contribuínte.
         Para obter máis información, consulte <a href="%{url}">esta páxina wiki</a>.
     terms:
-      title: Termos do colaborador
-      heading: Termos do colaborador
+      title: Termos do contribuínte
+      heading: Termos do contribuínte
       read and accept: Por favor, lea o acordo seguinte e prema no botón "Aceptar"
         para confirmar que acepta os termos deste acordo para as súas contribucións
         anteriores e futuras.
@@ -2092,8 +2092,8 @@ gl:
         e algunhas <a href="%{translations}">traducións non oficiais</a>'
       agree: Acepto
       decline: Rexeitar
-      you need to accept or decline: Lea e, a continuación, acepte ou rexeite os novos
-        Termos do colaborador para continuar.
+      you need to accept or decline: Lea e, deseguido, acepte ou rexeite os novos
+        Termos do contribuínte para proseguer.
       legale_select: 'Seleccione o seu país de residencia:'
       legale_names:
         france: Francia
@@ -2127,7 +2127,7 @@ gl:
       add as friend: Engadir coma amizade
       mapper since: 'Cartógrafo dende:'
       ago: (hai %{time_in_words_ago})
-      ct status: 'Termos do colaborador:'
+      ct status: 'Termos do contribuínte:'
       ct undecided: Indeciso
       ct declined: Rexeitou
       ct accepted: Aceptou hai %{ago}
@@ -2164,13 +2164,12 @@ gl:
       deactivate_user: Desactivar este usuario
       confirm_user: Confirmar este usuario
       hide_user: Agochar este usuario
-      unhide_user: Descubrir este usuario
+      unhide_user: Descobrir este usuario
       delete_user: Borrar este usuario
       confirm: Confirmar
       friends_changesets: conxuntos de cambios das amizades
       friends_diaries: entradas de diario das amizades
-      nearby_changesets: conxuntos de trocos dos usuarios de lugares que están preto
-        de ti
+      nearby_changesets: conxuntos de cambios dos usuarios de lugares preto de ti
       nearby_diaries: entradas de diario dos usuarios de lugares preto de ti
       report: Denunciar este usuario
     popup:
@@ -2206,11 +2205,11 @@ gl:
           públicos.</li><li>Non é posíbel reverter esta acción e agora os novos usuarios
           xa son públicos por defecto.</li></ul>
       contributor terms:
-        heading: 'Termos do colaborador:'
-        agreed: Aceptou os novos termos do colaborador.
-        not yet agreed: Aínda non aceptou os novos termos do colaborador.
-        review link text: Siga esta ligazón para revisar e aceptaos novos termos
-          do colaborador.
+        heading: 'Termos do contribuínte:'
+        agreed: Aceptou os novos termos do contribuínte.
+        not yet agreed: Aínda non aceptou os novos termos do contribuínte.
+        review link text: Siga esta ligazón para revisar e acepta-los novos termos
+          do contribuínte.
         agreed_with_pd: Tamén declarou que considera que as súas edicións pertencen
           ao dominio público.
         link text: que é isto?
@@ -2219,25 +2218,25 @@ gl:
       preferred editor: 'Editor preferido:'
       image: 'Imaxe:'
       gravatar:
-        gravatar: Usar Gravatar
+        gravatar: Emprega-lo Gravatar
         link: http://wiki.openstreetmap.org/wiki/Gravatar
         link text: que é isto?
         disabled: Gravatar foi desactivado.
         enabled: A visualización do seu Gravatar foi activada.
       new image: Engadir unha imaxe
-      keep image: Mantea imaxe actual
-      delete image: Eliminaa imaxe actual
-      replace image: Substituía imaxe actual
+      keep image: Mante-la imaxe actual
+      delete image: Elimina-la imaxe actual
+      replace image: Substituí-la imaxe actual
       image size hint: (as imaxes cadradas de, polo menos, 100x100 funcionan mellor)
       home location: 'Lugar de orixe:'
       no home location: Non inseriu o seu lugar de orixe.
       latitude: 'Latitude:'
       longitude: 'Lonxitude:'
-      update home location on click: Quere actualizar o domicilio ao premer sobre
-        o mapa?
+      update home location on click: Quere actualiza-lo lugar do enderezo ó premer
+        sobre o mapa?
       save changes button: Garda-los cambios
       make edits public button: Facer públicas todas as miñas edicións
-      return to profile: Volver ao perfil
+      return to profile: Voltar ó perfil
       flash update success confirm needed: Información de usuario actualizada correctamente.
         Procura no teu correo electrónico unha mensaxe para confirma-lo teu novo enderezo.
       flash update success: Información de usuario actualizada correctamente.
@@ -2261,7 +2260,7 @@ gl:
         proceso sen problemas.
       failure: Non se atopou o usuario "%{name}".
     confirm_email:
-      heading: Confirma-lo troco do enderezo de correo electrónico
+      heading: Confirma-lo cambio do enderezo de correo electrónico
       press confirm button: Prema sobre o botón de confirmación que aparece deseguido
         para confirmar o seu novo enderezo de correo electrónico.
       button: Confirmar
@@ -2353,7 +2352,7 @@ gl:
       non_moderator_revoke: Cómpre ser moderador para revogar un bloqueo.
     not_found:
       sorry: Non se puido atopar o bloqueo de usuario número %{id}.
-      back: Volver ao índice
+      back: Voltar ó índice
     new:
       title: Creando un bloqueo a %{name}
       heading: Creando un bloqueo a %{name}
@@ -2378,7 +2377,7 @@ gl:
         comúns.
       period: Por canto tempo, a partir de agora, o usuario terá bloqueado o uso da
         API?
-      submit: Actualizao bloqueo
+      submit: Actualiza-lo bloqueo
       show: Ollar este bloqueo
       back: Ollar tódolos bloqueos
       needs_view: O usuario ten que acceder ao sistema antes de que o bloqueo sexa
@@ -2509,7 +2508,7 @@ gl:
       center_marker: Centrar o mapa no marcador
       paste_html: Pegue o código HTML para incluílo na páxina web
       view_larger_map: Ver un mapa máis grande
-      only_standard_layer: Só a capa estándar pode exportarse como unha imaxe
+      only_standard_layer: Só a capa estándar pode exportarse coma unha imaxe
     embed:
       report_problem: Informar sobre un problema
     key:
@@ -2524,27 +2523,27 @@ gl:
         title: Amosa-la miña localización
         popup: Está a {distance} {unit} deste punto
       base:
-        standard: Estándar
+        standard: Mapa estándar
         cycle_map: Mapa ciclista
-        transport_map: Mapa de transporte
-        hot: Humanitario
+        transport_map: Mapa do transporte
+        hot: Mapa humanitario
       layers:
         header: Capas do mapa
         notes: Notas do mapa
         data: Datos do mapa
         gps: Trazas GPS públicas
-        overlays: Activar a sobreposición para reparar o mapa
+        overlays: Activa-las sobreposicións para solucionares os problemas no mapa
         title: Capas
       copyright: © <a href='%{copyright_url}'>Contribuíntes do OpenStreetMap</a>
       donate_link_text: <a class='donate-attr' href='%{donate_url}'>Facer unha doazón</a>
     site:
       edit_tooltip: Edita-lo mapa
       edit_disabled_tooltip: Achegue para edita-lo mapa
-      createnote_tooltip: Engadir unha nota ao mapa
+      createnote_tooltip: Engadir unha nota ó mapa
       createnote_disabled_tooltip: Achegar o mapa para engadirlle unha nota
       map_notes_zoom_in_tooltip: Achegar para veres as notas do mapa
       map_data_zoom_in_tooltip: Achegar para ver os datos do mapa
-      queryfeature_tooltip: Consultaas características
+      queryfeature_tooltip: Consulta-las características
       queryfeature_disabled_tooltip: Achegar para consulta-las características
     changesets:
       show:
@@ -2555,10 +2554,10 @@ gl:
         unhide_comment: amosar
     notes:
       new:
-        intro: Atopou un erro ou descubriu que falta algún dato? Informe aos outros
+        intro: Atopou un erro ou descobriu que falla algún dato? Informe ós outros
           cartógrafos para que poidamos solucionalo. Mova o marcador á posición correcta
-          e escriba unha nota explicando o problema.
-        advice: A túa nota será pública e poderá empregarse para actualizao mapa,
+          e escriba unha nota expoñendo o problema.
+        advice: A túa nota será pública e poderá empregarse para actualiza-lo mapa,
           por conseguinte, non insiras información persoal, nin datos de mapas protexidos
           por dereitos de autoría ou listaxes de directorios.
         add: Engadir a nota
index 95d4577b58f11fa5e4cd052ac8324bf2f12b583d..eda1328f5e4ec19558adb535788ca4bb07ce01cd 100644 (file)
@@ -68,7 +68,7 @@ km:
         display_name: ​​ឈ្មោះអេក្រង់ (Display name)
         description: បរិយាយ​
         languages: ភាសា​
-        pass_crypt: á\9e\9bá\9f\81á\9e\81â\80\8bá\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bâ\80\8b
+        pass_crypt: á\9e\96á\9e¶á\9e\80á\9f\92á\9e\99â\80\8bá\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8b
   browse:
     created: បាន​បង្កើត​
     closed: បាន​បិទ
@@ -78,6 +78,7 @@ km:
     deleted_by_html: បានលុបចោល <abbr title='%{title}'>%{time} មុន</abbr> ដោយ %{user}
     edited_by_html: បានកែប្រែ <abbr title='%{title}'>%{time} មុន</abbr> ដោយ %{user}
     closed_by_html: បានបិទ <abbr title='%{title}'>%{time} មុន</abbr> ដោយ %{user}
+    version: កំណែ
     in_changeset: សំណុំបន្លាស់ប្ដូរ
     anonymous: អនាមិក
     no_comment: (គ្មានមតិយោបល់)
@@ -95,11 +96,13 @@ km:
       way_paginated: ផ្លូវចំនួន (%{x}-%{y} ក្នុងចំណោម %{count})
       relation: ទំនាក់ទំនងចំនួន (%{count})
       relation_paginated: ទំនាក់ទំនងចំនួន (%{x}-%{y} ក្នុងចំណោម %{count})
+      comment: មតិយោបល់ (%{count})
       changesetxml: សំណុំបន្លាស់ប្ដូរ​ XML
       feed:
         title: សំណុំបន្លាស់ប្ដូរ​ %{id}
-        title_comment: á\9e\9fá\9f\86á\9e\93á\9e»á\9f\86â\80\8bá\9e\94á\9f\86លាស់ប្តូរ​ %{id} - %{comment}
+        title_comment: á\9e\9fá\9f\86á\9e\8eá\9e»á\9f\86á\9e\94á\9e\93á\9f\92លាស់ប្តូរ​ %{id} - %{comment}
       join_discussion: កត់ឈ្មោះចូលដើម្បីចូលរួមពិភាក្សា
+      discussion: ការពិភាក្សា
     node:
       title: ខ្នែង៖ %{name}
       history_title: ប្រវត្តិខ្នែង៖ %{name}
@@ -233,6 +236,10 @@ km:
         geonames: លទ្ធផលពី <a href="http://www.geonames.org/">GeoNames</a>
     search_osm_nominatim:
       prefix:
+        aerialway:
+          cable_car: ឡានយោង
+          chair_lift: កៅអីយោង
+          pylon: ប៉មខ្សែភ្លើង
         amenity:
           arts_centre: មជ្ឍមណ្ឌលសិល្បៈ
           atm: ATM
@@ -370,6 +377,7 @@ km:
           motorway_link: ផ្លូវល្បឿនលឿន
           rest_area: កន្លែងសម្រាក
           road: ផ្លូវ
+          steps: ជណ្ដើរ
           stop: ផ្លាកសញ្ញាឈប់
           street_lamp: ភ្លើងបំភ្លឺផ្លូវ
           traffic_signals: ភ្លើងសញ្ញាចរាចរណ៍
@@ -413,7 +421,9 @@ km:
           vineyard: ចំការទំពាំងបាយជូរ
         leisure:
           beach_resort: ឆ្នេរកំសាន្ត
+          bird_hide: ខ្ទមមើលបក្សី
           common: ដីរួម
+          firepit: ចង្ក្រាន
           fishing: តំបន់ស្ទូចត្រី
           fitness_centre: មណ្ឌលហាត់ប្រាណ
           fitness_station: ស្ថានីយ៍ហាត់ប្រាណ
@@ -430,8 +440,23 @@ km:
           stadium: កីឡាដ្ឋាន
           swimming_pool: អាងហែលទឹក
           water_park: ឧទ្យានទឹក
+        man_made:
+          bridge: ស្ពាន
+          bunker_silo: ត្រង់សេ
+          chimney: បំពង់ផ្សែង
+          dyke: ទំនប់
+          flagpole: បង្គោលទង់ជាតិ
+          kiln: ឡ
+          petroleum_well: អណ្ដូងប្រេង
+          wastewater_plant: ស្ថានីយ៍សម្អាតទឹក
+          water_tower: ប៉មទឹក
+          water_well: អណ្ដូង
         military:
           airfield: មូលដ្ឋានទ័ពអាកាស
+          bunker: ត្រង់សេ
+          "yes": មូលដ្ឋានយោធា
+        mountain_pass:
+          "yes": ផ្លូវភ្នំ
         natural:
           bay: ឆកសមុទ្រ
           beach: ឆ្នេរខ្សាច់
@@ -440,12 +465,14 @@ km:
           cliff: ជ្រោះ
           crater: មាត់ភ្នំភ្លើង
           dune: ភ្នំខ្សាច់
+          forest: ព្រៃ
           hill: កូនភ្នំ
           island: កោះ
           land: ដី
           mud: ភក់
           peak: កំពូល
           point: ចំនុច
+          spring: ទឹកផុស
           strait: ដៃសមុទ្រ
           tree: ដើមឈើ
           valley: ជ្រលងភ្នំ
@@ -465,7 +492,7 @@ km:
           insurance: ការិយាល័យធានារ៉ាប់រង
           it: ការិយាល័យព័តមានវិទ្យា
           lawyer: មេធាវី
-          ngo: ការិយាល័យ NGO
+          ngo: ការិយាល័យអង្គការ
           telecommunication: ការិយាល័យទូរគមនាគមន៍
           travel_agent: ភ្នាក់ងារទេសចរណ៍
           "yes": ការិយាល័យ
@@ -529,18 +556,42 @@ km:
           gallery: វិចិត្រសាល
           gift: ហាងវត្ថុអនុស្សាវរីយ៍
           greengrocer: ហាងបន្លែនិងផ្លែឈើ
+          grocery: ហាងចំណីអាហារ
           hairdresser: ហាងកាត់សក់និងអ៊ុតសក់
           jewelry: ហាងលក់គ្រឿងអល័ង្ការ
           laundry: ហាងបោកអ៊ុត
+          market: ផ្សារ
           massage: ហាងម៉ាស្សា
           mobile_phone: ហាងទូរស័ព្ទ
           motorcycle: ហាងទោចក្រយានយន្ត
           music: ហាងតន្ត្រី
           newsagent: ហាងកាសែត
           optician: ហាងវ៉ែនតា
+          pawnbroker: ហាងបញ្ចាំ
+          pet: ហាងសត្វចិញ្ចឹម
+          pharmacy: ឱសថស្ថាន
+          photo: ហាងថតរូប
+          seafood: ហាងគ្រឿងសមុទ្រ
+          second_hand: ហាងជជុះ
+          shoes: ហាងស្បែកជើង
+          sports: ហាងសម្ភារៈកីឡា
+          stationery: បណ្ណាគារ
+          supermarket: ផ្សារទំនើប
+          tailor: ហាងកាត់ដេរ
+          ticket: ហាងសំបុត្រ
+          tobacco: ហាងបារី
+          travel_agency: ភ្នាក់ងារទេសចរណ៍
+          tyres: ហាងកង់ឡាន
         tourism:
           camp_site: កន្លែងបោះតង់
           caravan_site: កន្លែងចតឡានបោះតង់
+          guest_house: ផ្ទះសំណាក់
+          hostel: ផ្ទះសំណាក់
+          hotel: សណ្ឋាគារ
+          museum: សារមន្ទីរ
+          zoo: សួនសត្វ
+        waterway:
+          canal: ព្រែកជីក
     description:
       types:
         cities: ក្រុង​
index 90f55440241d4fc814e8a7286ae2ee85cc52edd5..e58bf02150c86b46ed421f1d27f225b1ecbd5cb9 100644 (file)
@@ -305,7 +305,7 @@ nl:
       user_title: Dagboek van %{user}
       in_language_title: Dagboekberichten in het %{language}
       new: Nieuw dagboekbericht
-      new_title: Nieuw bericht in uw dagboek schrijven
+      new_title: Nieuw bericht in mijn dagboek schrijven
       no_entries: Het dagboek is leeg
       recent_entries: Recente dagboekberichten
       older_entries: Oudere berichten
index 7de950203c80613718e9547eb71fce66455a8342..d01f00e6a4ea095d76fef2ddffbe2d15c71fec9e 100644 (file)
@@ -145,8 +145,8 @@ sr:
       feed:
         title: Скуп измена %{id}
         title_comment: Скуп измена %{id} – %{comment}
-      join_discussion: Пријавите се да бисте се укључили у разговор
-      discussion: Ð Ð°Ð·Ð³Ð¾Ð²Ð¾Ñ\80
+      join_discussion: Пријавите се да бисте се придружили дискусији
+      discussion: Ð\94иÑ\81кÑ\83Ñ\81иÑ\98а
     node:
       title: 'Тачка: %{name}'
       history_title: 'Историја тачака: %{name}'
@@ -260,12 +260,12 @@ sr:
     timeout:
       sorry: Нажалост, преузимање траженог списка измена предуго траје.
     rss:
-      title_all: Ð Ð°Ð·Ð³Ð¾Ð²Ð¾Ñ\80 о скупу измена OpenStreetMap-а
-      title_particular: 'РазговоÑ\80 о скупу измена #%{changeset_id} OpenStreetMap-а'
+      title_all: Ð\94иÑ\81кÑ\83Ñ\81иÑ\98а о скупу измена OpenStreetMap-а
+      title_particular: 'Ð\94иÑ\81кÑ\83Ñ\81иÑ\98а о скупу измена #%{changeset_id} OpenStreetMap-а'
       comment: Нови коментар на скуп измена бр. %{changeset_id} корисника %{author}
       commented_at_html: Ажурирано пре %{when}
       commented_at_by_html: Ажурирао %{user} пре %{when}
-      full: Ð¦ÐµÐ»Ð¾ÐºÑ\83пан Ñ\80азговоÑ\80
+      full: Ð¦ÐµÐ»Ð° Ð´Ð¸Ñ\81кÑ\83Ñ\81иÑ\98а
   diary_entry:
     new:
       title: Нови дневнички запис
@@ -1472,7 +1472,8 @@ sr:
           табле.
       irc:
         title: IRC
-        description: Интерактивни разговор на многим језицима и на многе теме.
+        description: Интерактивно ћаскање на много различитих језицима и на многе
+          теме.
       switch2osm:
         title: switch2osm
         description: Помоћ за компаније и организације које прелазе на мапе засноване
index b92e20e18095268f752d36185b8e0b17d472dde2..7e9ec3fbeb156377b351b243fe73fdb933ad5e95 100644 (file)
@@ -1787,6 +1787,8 @@ sv:
       trace_uploaded: Din GPX-fil har laddats upp och väntar på att lagras i databasen.
         Detta sker vanligtvis inom en halvtimme. När den är klar skickas en e-post
         till dig.
+      upload_failed: Tyvärr, GPX-uppladdningen misslyckades. En administratör har
+        meddelats om felet. Försök igen
       traces_waiting:
         one: Du har %{count} GPS-spår som håller på att laddas upp. Vänta gärna på
           att detta blir klart innan du laddar upp fler, så att du inte blockerar
@@ -1811,6 +1813,8 @@ sv:
       save_button: Spara ändringar
       visibility: 'Synlighet:'
       visibility_help: vad betyder detta?
+    update:
+      updated: Spår uppdaterades
     trace_optionals:
       tags: Taggar
     show:
index 4d4e94d78791f923397f9d9a52a75e23a6fb3df0..78d7c9e6724d606a15fa1554d1ba9c4ecf81dab4 100644 (file)
@@ -1705,7 +1705,7 @@ th:
       remember: จดจำฉันไว้ในระบบ
       lost password link: ลืมรหัสผ่านหรือ?
       login_button: ลงชื่อเข้าใช้
-      register now: à¸¥à¸\87à¸\97ะà¹\80à¸\9aียà¸\99à¸\81à¹\88อà¸\99à¹\80ลย
+      register now: à¸ªà¸¡à¸±à¸\84รà¹\80ลย!
       with username: มีบัญชี OpenStreetMap แล้วหรือยัง? ถ้ามีโปรดเข้าระบบด้วยชื่อผู้ใช้และรหัสผ่านที่ท่านมี
       with external: นอกจากนี้ ท่านสามารถใช้บัญชีผู้ใช้จากเว็บอื่นในการเข้าใช้งานได้
       new to osm: เพิ่งเริ่มใช้ OpenStreetMap หรือ?
index 77857aeac30cbfafc9fe5fec0e7e7b5530c992bf..e609948631818096551bc01cf89579f4d9788e51 100644 (file)
@@ -242,8 +242,8 @@ OpenStreetMap::Application.routes.draw do
   get "/user/:display_name/delete" => "user#delete", :as => :delete_user
 
   # user lists
-  match "/users" => "user#list", :via => [:get, :post]
-  match "/users/:status" => "user#list", :via => [:get, :post]
+  match "/users" => "user#index", :via => [:get, :post]
+  match "/users/:status" => "user#index", :via => [:get, :post]
 
   # geocoder
   get "/search" => "geocoder#search"
index 605c47555fa6df496aa3b7bf154d83bdb6dd5a2c..7cfc468b2d9906e4fa47ba9b13bbe72a118b4428 100644 (file)
@@ -1032,8 +1032,8 @@ class TracesControllerTest < ActionController::TestCase
         assert_select "item", :count => traces.length do |items|
           traces.zip(items).each do |trace, item|
             assert_select item, "title", trace.name
-            assert_select item, "link", "http://test.host/user/#{trace.user.display_name.gsub(' ', '%20')}/traces/#{trace.id}"
-            assert_select item, "guid", "http://test.host/user/#{trace.user.display_name.gsub(' ', '%20')}/traces/#{trace.id}"
+            assert_select item, "link", "http://test.host/user/#{ERB::Util.u(trace.user.display_name)}/traces/#{trace.id}"
+            assert_select item, "guid", "http://test.host/user/#{ERB::Util.u(trace.user.display_name)}/traces/#{trace.id}"
             assert_select item, "description"
             # assert_select item, "dc:creator", trace.user.display_name
             assert_select item, "pubDate", trace.timestamp.rfc822
index ba4b2ff3ac02a58c785843810d484f6d5e338b95..ba47094071f3b170399675696098d5e27f82c759 100644 (file)
@@ -170,19 +170,19 @@ class UserControllerTest < ActionController::TestCase
 
     assert_routing(
       { :path => "/users", :method => :get },
-      { :controller => "user", :action => "list" }
+      { :controller => "user", :action => "index" }
     )
     assert_routing(
       { :path => "/users", :method => :post },
-      { :controller => "user", :action => "list" }
+      { :controller => "user", :action => "index" }
     )
     assert_routing(
       { :path => "/users/status", :method => :get },
-      { :controller => "user", :action => "list", :status => "status" }
+      { :controller => "user", :action => "index", :status => "status" }
     )
     assert_routing(
       { :path => "/users/status", :method => :post },
-      { :controller => "user", :action => "list", :status => "status" }
+      { :controller => "user", :action => "index", :status => "status" }
     )
   end
 
@@ -1431,7 +1431,7 @@ class UserControllerTest < ActionController::TestCase
     assert_equal "deleted", user.status
   end
 
-  def test_list_get
+  def test_index_get
     user = create(:user)
     moderator_user = create(:moderator_user)
     administrator_user = create(:administrator_user)
@@ -1443,21 +1443,21 @@ class UserControllerTest < ActionController::TestCase
     assert_equal 7, User.count
 
     # Shouldn't work when not logged in
-    get :list
+    get :index
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
 
     session[:user] = user.id
 
     # Shouldn't work when logged in as a normal user
-    get :list
+    get :index
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
 
     session[:user] = moderator_user.id
 
     # Shouldn't work when logged in as a moderator
-    get :list
+    get :index
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
 
@@ -1465,25 +1465,25 @@ class UserControllerTest < ActionController::TestCase
 
     # Note there is a header row, so all row counts are users + 1
     # Should work when logged in as an administrator
-    get :list
+    get :index
     assert_response :success
-    assert_template :list
+    assert_template :index
     assert_select "table#user_list tr", :count => 7 + 1
 
     # Should be able to limit by status
-    get :list, :params => { :status => "suspended" }
+    get :index, :params => { :status => "suspended" }
     assert_response :success
-    assert_template :list
+    assert_template :index
     assert_select "table#user_list tr", :count => 1 + 1
 
     # Should be able to limit by IP address
-    get :list, :params => { :ip => "1.2.3.4" }
+    get :index, :params => { :ip => "1.2.3.4" }
     assert_response :success
-    assert_template :list
+    assert_template :index
     assert_select "table#user_list tr", :count => 1 + 1
   end
 
-  def test_list_get_paginated
+  def test_index_get_paginated
     1.upto(100).each do |n|
       User.create(:display_name => "extra_#{n}",
                   :email => "extra#{n}@example.com",
@@ -1495,29 +1495,29 @@ class UserControllerTest < ActionController::TestCase
     # 100 examples, an administrator, and a granter for the admin.
     assert_equal 102, User.count
 
-    get :list
+    get :index
     assert_response :success
-    assert_template :list
+    assert_template :index
     assert_select "table#user_list tr", :count => 51
 
-    get :list, :params => { :page => 2 }
+    get :index, :params => { :page => 2 }
     assert_response :success
-    assert_template :list
+    assert_template :index
     assert_select "table#user_list tr", :count => 51
 
-    get :list, :params => { :page => 3 }
+    get :index, :params => { :page => 3 }
     assert_response :success
-    assert_template :list
+    assert_template :index
     assert_select "table#user_list tr", :count => 3
   end
 
-  def test_list_post_confirm
+  def test_index_post_confirm
     inactive_user = create(:user, :pending)
     suspended_user = create(:user, :suspended)
 
     # Shouldn't work when not logged in
     assert_no_difference "User.active.count" do
-      post :list, :params => { :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 } }
+      post :index, :params => { :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 } }
     end
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
@@ -1528,7 +1528,7 @@ class UserControllerTest < ActionController::TestCase
 
     # Shouldn't work when logged in as a normal user
     assert_no_difference "User.active.count" do
-      post :list, :params => { :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 } }
+      post :index, :params => { :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 } }
     end
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
@@ -1539,7 +1539,7 @@ class UserControllerTest < ActionController::TestCase
 
     # Shouldn't work when logged in as a moderator
     assert_no_difference "User.active.count" do
-      post :list, :params => { :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 } }
+      post :index, :params => { :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 } }
     end
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
@@ -1550,21 +1550,21 @@ class UserControllerTest < ActionController::TestCase
 
     # Should work when logged in as an administrator
     assert_difference "User.active.count", 2 do
-      post :list, :params => { :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 } }
+      post :index, :params => { :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 } }
     end
     assert_response :redirect
-    assert_redirected_to :action => :list
+    assert_redirected_to :action => :index
     assert_equal "confirmed", inactive_user.reload.status
     assert_equal "confirmed", suspended_user.reload.status
   end
 
-  def test_list_post_hide
+  def test_index_post_hide
     normal_user = create(:user)
     confirmed_user = create(:user, :confirmed)
 
     # Shouldn't work when not logged in
     assert_no_difference "User.active.count" do
-      post :list, :params => { :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 } }
+      post :index, :params => { :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 } }
     end
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
@@ -1575,7 +1575,7 @@ class UserControllerTest < ActionController::TestCase
 
     # Shouldn't work when logged in as a normal user
     assert_no_difference "User.active.count" do
-      post :list, :params => { :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 } }
+      post :index, :params => { :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 } }
     end
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
@@ -1586,7 +1586,7 @@ class UserControllerTest < ActionController::TestCase
 
     # Shouldn't work when logged in as a moderator
     assert_no_difference "User.active.count" do
-      post :list, :params => { :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 } }
+      post :index, :params => { :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 } }
     end
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
@@ -1597,10 +1597,10 @@ class UserControllerTest < ActionController::TestCase
 
     # Should work when logged in as an administrator
     assert_difference "User.active.count", -2 do
-      post :list, :params => { :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 } }
+      post :index, :params => { :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 } }
     end
     assert_response :redirect
-    assert_redirected_to :action => :list
+    assert_redirected_to :action => :index
     assert_equal "deleted", normal_user.reload.status
     assert_equal "deleted", confirmed_user.reload.status
   end